Jag använder mysqls mysql-connector-python
-bibliotek och försöker ansluta till MariaDB
-databasen på andra enheter i det lokala nätverket, men det misslyckas, och det avslutas direkt utan att mata ut något felmeddelande.
Problembeskrivning
Programvaruversion:
-
MariaDB server 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB server, IP är 192.168.1.60
-
Klient, IP är 192.168.1.35
Python-koden är som följer:
import mysql.connector
import logging
# Konfigurera loggning
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
try:
logging.info("Ansluter till databasen...")
connection = mysql.connector.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx")
logging.info("Anslutning upprättad.")
# Skapa ett markörobjekt för att utföra SQL-frågor
cursor = connection.cursor()
# Hämta alla databaser
logging.info("Utför SHOW DATABASES-fråga...")
cursor.execute("SHOW DATABASES")
# Skriv ut alla databaser och tabellnamnen i varje databas
for (database,) in cursor.fetchall():
logging.info(f"Databas: {database}")
# Växla till aktuell databas
cursor.execute(f"USE {database}")
# Hämta och skriv ut alla tabeller i aktuell databas
cursor.execute("SHOW TABLES")
for (table,) in cursor.fetchall():
logging.info(f" Tabell: {table}")
# Stäng markören och anslutningen
cursor.close()
connection.close()
logging.info("Anslutning stängd.")
except mysql.connector.Error as err:
logging.error(f"Fel: {err}")
except Exception as e:
logging.error(f"Oväntat fel: {e}")
Efter att ha kört den här koden avslutas den direkt utan att mata ut något felmeddelande.
Jag kontrollerade tjänstloggen på MariaDB
-servern och fann följande felmeddelande.
mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)
Försök att lösa problemet
Eftersom MariaDB
-servern kan ta emot anslutningsförfrågningar, indikerar det att konfigurationen av brandväggarna på de två enheterna är normal.
Jag kontrollerade behörigheterna för den inloggade användaren och fann att de också är normala.
Jag har letat efter mycket information och provat olika metoder. Men oavsett vad, kan jag inte lösa problemet.
Slutligen försökte jag använda ett annat Python-bibliotek, pymysql
(version: 1.1.1), för att ansluta till MariaDB
-servern, koden är som följer:
import pymysql
# Anslut till MariaDB-servern
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()
Inget fel rapporterades, och anslutningen lyckades och MariaDB-versionen skrevs ut.
Men jag vet fortfarande inte varför jag inte kunde ansluta tidigare.
Andra versioner av denna webbsida
Denna artikel finns på flera språk.
Om du vill lämna en kommentar, besök följande webbsida:
Dessa webbsidor stöder endast visning, och du kan inte skriva kommentarer eller lämna meddelanden, men de erbjuder fler språkalternativ och har kortare laddningstider:
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
Den här artikeln är översatt från Chinese (Simplified) till Swedish med hjälp av AI.