Ich verwende die mysql-connector-python
-Bibliothek von mysql, um eine Verbindung zu einer MariaDB
-Datenbank auf anderen Geräten im lokalen Netzwerk herzustellen, aber es ist fehlgeschlagen und hat sich direkt beendet, ohne Fehlermeldungen auszugeben.
Problembeschreibung
Softwareversion:
-
MariaDB server 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB server, IP ist 192.168.1.60
-
Client, IP ist 192.168.1.35
Python-Code ist wie folgt:
import mysql.connector
import logging
# Konfigurieren der Protokollierung
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
try:
logging.info("Verbinde mit der Datenbank...")
connection = mysql.connector.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx")
logging.info("Verbindung hergestellt.")
# Erstellen Sie ein Cursor-Objekt, um SQL-Abfragen auszuführen
cursor = connection.cursor()
# Holen Sie sich alle Datenbanken
logging.info("Führe die SHOW DATABASES-Abfrage aus...")
cursor.execute("SHOW DATABASES")
# Drucken Sie alle Datenbanken und die Tabellennamen in jeder Datenbank
for (database,) in cursor.fetchall():
logging.info(f"Datenbank: {database}")
# Wechseln Sie zur aktuellen Datenbank
cursor.execute(f"USE {database}")
# Holen Sie sich und drucken Sie alle Tabellen in der aktuellen Datenbank
cursor.execute("SHOW TABLES")
for (table,) in cursor.fetchall():
logging.info(f" Tabelle: {table}")
# Schließen Sie den Cursor und die Verbindung
cursor.close()
connection.close()
logging.info("Verbindung geschlossen.")
except mysql.connector.Error as err:
logging.error(f"Fehler: {err}")
except Exception as e:
logging.error(f"Unerwarteter Fehler: {e}")
Nach dem Ausführen dieses Codes wird er direkt beendet, ohne Fehlermeldungen auszugeben.
Ich habe die Serviceprotokolle auf dem MariaDB
-Server überprüft und die folgenden Fehlermeldungen gefunden.
mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)
Versuch, das Problem zu lösen
Da der MariaDB
-Server Verbindungsanfragen empfangen kann, ist die Firewall-Konfiguration der beiden Geräte normal.
Ich habe die Berechtigungen des Login-Benutzers überprüft und festgestellt, dass sie normal sind.
Ich habe viele Informationen gefunden und verschiedene Methoden ausprobiert. Aber wie auch immer, ich konnte dieses Problem nicht lösen.
Schließlich habe ich versucht, eine andere Python-Bibliothek pymysql
(Version: 1.1.1) zu verwenden, um eine Verbindung zum MariaDB
-Server herzustellen. Der Code ist wie folgt:
import pymysql
# Verbinden Sie sich mit dem MariaDB-Server
conn = pymysql.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx"
)
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print("MariaDB version:", cursor.fetchone()[0])
cursor.close()
conn.close()
Es gab keine Fehler und die Verbindung wurde erfolgreich hergestellt und die MariaDB-Version wurde ausgegeben.
Ich weiß immer noch nicht, warum die vorherige Verbindung fehlgeschlagen ist.
Andere Versionen dieser Webseite
Dieser Artikel ist in mehreren Sprachen verfügbar.
Wenn Sie einen Kommentar abgeben möchten, besuchen Sie bitte die folgenden Webseiten:
Diese Webseiten unterstützen nur das Browsen und können keine Kommentare oder Nachrichten veröffentlichen, bieten aber mehr Sprachoptionen und kürzere Ladezeiten:
ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO
Dieser Artikel wurde von Chinese (Simplified) mit KI ins Deutsche übersetzt.