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:

ZH EN ZH-TW JA

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.