Jeg bruger mysql’s mysql-connector-python
bibliotek og forsøger at oprette forbindelse til andre enheders MariaDB
database i det lokale netværk, men det mislykkes, og det lukker direkte ned uden at udskrive nogen fejlmeddelelser.
Problembeskrivelse
Softwareversion:
-
MariaDB server 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB server, IP er 192.168.1.60
-
Klient, IP er 192.168.1.35
Python-kode er som følger:
import mysql.connector
import logging
# Konfigurer logføring
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
try:
logging.info("Opretter forbindelse til databasen...")
connection = mysql.connector.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx")
logging.info("Forbindelse etableret.")
# Opret et cursor-objekt til at udføre SQL-forespørgsler
cursor = connection.cursor()
# Hent alle databaser
logging.info("Udfører SHOW DATABASES forespørgsel...")
cursor.execute("SHOW DATABASES")
# Udskriv alle databaser og tabellerne i hver database
for (database,) in cursor.fetchall():
logging.info(f"Database: {database}")
# Skift til den aktuelle database
cursor.execute(f"USE {database}")
# Hent og udskriv alle tabeller i den aktuelle database
cursor.execute("SHOW TABLES")
for (table,) in cursor.fetchall():
logging.info(f" Table: {table}")
# Luk cursor og forbindelse
cursor.close()
connection.close()
logging.info("Forbindelse lukket.")
except mysql.connector.Error as err:
logging.error(f"Error: {err}")
except Exception as e:
logging.error(f"Unexpected error: {e}")
Efter at have kørt denne kode lukker den direkte ned uden at udskrive nogen fejlmeddelelser.
Jeg tjekkede servicejournalerne på MariaDB
serveren og fandt følgende fejlmeddelelse.
mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)
Forsøg på at løse problemet
Fordi MariaDB
serveren kan modtage forbindelsesanmodningen, betyder det, at firewall-konfigurationen på begge enheder er normal.
Jeg tjekkede brugerens login-rettigheder, og de er også normale.
Jeg har slået en masse ting op og prøvet forskellige metoder. Men uanset hvad, kan jeg ikke løse dette problem.
Til sidst prøvede jeg at bruge et andet python-bibliotek pymysql
(version: 1.1.1) til at oprette forbindelse til MariaDB
serveren, koden er som følger:
import pymysql
# Opret forbindelse til MariaDB-serveren
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()
Ingen fejl, vellykket forbindelse og udskrivning af MariaDB version.
Men jeg ved stadig ikke årsagen til, at jeg ikke kunne oprette forbindelse før.
Andre versioner af denne side
Denne artikel findes i flere sprogversioner.
Hvis du vil skrive en kommentar, kan du besøge følgende side:
Disse sider understøtter kun browsing, du kan ikke skrive kommentarer eller efterlade beskeder, men de giver flere sprogmuligheder og hurtigere indlæsningstider:
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
Denne artikel er oversat fra Chinese (Simplified) til Danish af AI.