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:

ZH EN ZH-TW JA

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.