Wenn ich versuche, mit mysql-connector-python eine Verbindung zu MySQL herzustellen, kann ich keine Verbindung mit dem Fehler "SSL-Verbindungsfehler: SSL_CTX_set_tmp_dh fehlgeschlagen" herstellen.

Einführung

Wenn ich versuche, eine Verbindung zu einem MySQL-Server herzustellen, der von einem Docker-Image mit der Python-Bibliothek "mysql-connector-python" gestartet wurde, wird der Fehler "** SSL-Verbindungsfehler: SSL_CTX_set_tmp_dh fehlgeschlagen **" angezeigt und ich kann keine Verbindung zu MySQL herstellen. Ist vorgefallen.

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()

↓ Nach der Ausführung

Fehlermeldung


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

# //Kürzung

Jetzt, da Sie sich verbinden können, werde ich es als Memorandum belassen.

Ausführungsumgebung

** ■ Kunde **

$ 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

** ■ MySQL Server ** --MySQL 5.7 (Standardeinstellung)

Gegenmaßnahmen

Ich habe beim Erstellen einer DB-Verbindung `` `use_pure = True``` im Argument angegeben und das zu verwendende Modul auf die echte Python-Version anstelle der erweiterten Standardversion C geändert, und jetzt kann ich eine Verbindung herstellen.

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  #← Hinzufügen
)
cursor = conn.cursor()

Ist dieser Fehler meines Erachtens ein Kompatibilitätsproblem zwischen mysql-connector-python und openssl? Es scheint, dass es verursacht wird durch. Ich habe es in meiner Umgebung nicht ausprobiert, aber laut dem folgenden Problem gibt es einen Kommentar, dass das Herabstufen der openssl-Version auf 1.0.2 das Herstellen einer Verbindung ermöglichte.

MySQLdb und mysql.connector sind nicht mit openssl 1.1.1a # 10646 kompatibel

Darüber hinaus scheint die Leistung durch die Verwendung der C-Implementierungsversion im Vergleich zum echten Python verbessert zu werden. Seien Sie also vorsichtig, wenn Sie mit einer großen Datenmenge umgehen.

Kapitel 8 Die Connector / Python C-ErweiterungSSL-Fehler beim Herstellen einer Verbindung unter Linux / Mac mit Openssl 1.1.1 # 22n

Recommended Posts

Wenn ich versuche, mit mysql-connector-python eine Verbindung zu MySQL herzustellen, kann ich keine Verbindung mit dem Fehler "SSL-Verbindungsfehler: SSL_CTX_set_tmp_dh fehlgeschlagen" herstellen.
Wenn ich versuche, mysqlclient mit Django zu installieren, wird die Fehlermeldung angezeigt: Befehl 'gcc' ist mit dem Exit-Status 1 fehlgeschlagen.
Ich erhalte [Fehler 2055], wenn ich versuche, mit Heroku eine Verbindung zu MySQL herzustellen
Wenn ich TensorFlow nach Python importiere, wird "Importfehler: DLL-Ladevorgang fehlgeschlagen: Das angegebene Modul wurde nicht gefunden" angezeigt.
Wenn ich versuche, Pandas unter macOS zu importieren, wird die Fehlermeldung Kein Modul mit dem Namen'_bz2 'angezeigt.
Wenn ich versuche, django und postgresql mit Docker zu verbinden, wird die Fehlermeldung "django.db.utils.OperationalError: Hostname" db "konnte nicht in Adresse übersetzt werden: Name oder Dienst nicht bekannt"
Wenn ich versuche, die Daten in DynamoDB mit Python (boto3) zu aktualisieren, wird "ExpressionAttributeNames enthält ungültigen Schlüssel: Syntaxfehler; Schlüssel: <Schlüsselname>" angezeigt.
Wenn ich versuche, mit Heroku zu pushen, funktioniert es nicht
Was tun, wenn beim Importieren von _ssl ein Fehler auftritt?
[Lösung] Wenn ich versuche, mit GAE eine Verbindung zu CloudSQL herzustellen, wird nur bei dev_appserver ein ImportError angezeigt.
Umgang mit dem Fehler "Fehler beim Laden des Moduls" canberra-gtk-module ", der beim Ausführen von OpenCV auftritt
Beim Versuch, maec 4.0.1.0 mit pip zu installieren, wird eine Fehlermeldung angezeigt
Wenn ich versuche, pip zu verwenden, ist das SSL-Modul nicht verfügbar.
Wenn die WSL-Distribution nicht gestartet werden kann (Fehler: "WslRegisterDistribution fehlgeschlagen mit Fehler: 0x800706be.")
Wenn ich versuche, den Befehl make von Makefile mit os / exec von golang auszuführen, führen die zweite und nachfolgende Ausführung zu einem Fehler.
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
Ich erhalte einen UnicodeDecodeError, wenn ich versuche, mit Python sqlalchemy eine Verbindung zu Oracle herzustellen
Stellen Sie mit Python in Docker eine Verbindung zu MySQL her
Importfehler: Der Name'Flask 'kann nicht importiert werden, wenn der Dateiname in Flask flask.py lautet
Als ich versuchte, das Root-Passwort mit ansible zu ändern, konnte ich nicht darauf zugreifen.
Beachten Sie die Lösung, da Django nicht mit pip installiert werden konnte
Drei Dinge, von denen ich süchtig war, als ich Python und MySQL mit Docker verwendete
Als ich mit VScode eine Verbindung zu einem entfernten Jupyter-Server herstellte, war dieser entfernt, aber lokal.
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
Beim Speichern mit OpenCV ist ein Fehler aufgetreten
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich wollte mit der Bezier-Kurve spielen
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
Eine Geschichte, die fehlgeschlagen ist, als versucht wurde, das Suffix mit rstrip aus einem String zu entfernen
Ich erhalte eine Fehlermeldung, wenn ich versuche, Python mit pyenv in Catalina auf 3 Serien zu erhöhen
Ich möchte über die Verbindungsumgebung benachrichtigt werden, wenn RaspberryPi eine Verbindung zum Netzwerk herstellt