Lorsque j'essaie de me connecter à un serveur MySQL démarré à partir d'une image Docker à l'aide de la bibliothèque "mysql-connector-python" de Python, j'obtiens une erreur "** SSL connection error: SSL_CTX_set_tmp_dh failed **" et je ne parviens pas à me connecter à MySQL. S'est produit.
test.py
import mysql.connector
conn = mysql.connector.connect(
host='127.0.0.1',
port='3306',
user='user',
password='password',
database='sample_db'
)
cursor = conn.cursor()
↓ Après exécution
Message d'erreur
Traceback (most recent call last):
File "/Users/user1/opt/anaconda3/lib/python3.7/site-packages/mysql/connector/connection_cext.py", line 200, in _open_connection
self._cmysql.connect(**cnx_kwargs)
_mysql_connector.MySQLInterfaceError: SSL connection error: SSL_CTX_set_tmp_dh failed
# //réduction
Maintenant que vous pouvez vous connecter, je vais le laisser sous forme de mémorandum.
** ■ Client **
$ conda list --show-channel-urls
mysql-connector-c 6.1.11 hccea1a4_0
mysql-connector-python 8.0.18 py37h3febbb0_1
openssl 1.1.1d h1de35cc_3
python 3.7.4 h359304d_1
** ■ Serveur MySQL ** --MySQL 5.7 (paramètre par défaut)
J'ai spécifié use_pure = True
dans l'argument lors de la création d'une connexion à la base de données, et j'ai changé le module à utiliser pour la version Python authentique au lieu de la version étendue C par défaut, et maintenant je peux me connecter.
7.1 Connector/Python Connection Arguments
test.py
import mysql.connector
conn = mysql.connector.connect(
host='127.0.0.1',
port='3306',
user='user',
password='password',
database='sample_db',
use_pure=True #← Ajouter
)
cursor = conn.cursor()
D'après ce que j'ai regardé, cette erreur est-elle un problème de compatibilité entre mysql-connector-python et openssl? Il semble que cela soit causé par. Je ne l'ai pas essayé dans mon environnement, mais selon le problème suivant, il y a un commentaire selon lequel la rétrogradation de la version openssl vers 1.0.2 a rendu possible la connexion.
・ MySQLdb et mysql.connector sont incompatibles avec openssl 1.1.1a # 10646
De plus, il semble que les performances seront améliorées en utilisant la version d'implémentation C par rapport au véritable Python, donc soyez prudent lorsque vous manipulez une grande quantité de données.
・ Chapitre 8 Le Connecteur / Extension Python C ・ Erreur SSL lors de la connexion sous Linux / Mac à l'aide d'Openssl 1.1.1 # 22n
Recommended Posts