Jeg bruker mysqls mysql-connector-python-bibliotek og prøver å koble til en MariaDB-database på andre enheter i det lokale nettverket, men det mislykkes, og det avsluttes direkte uten å skrive ut noen feilmeldinger.

Problembeskrivelse

Programvareversjon:

  • 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 loggføring  
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')  
  
try:  
    logging.info("Kobler til databasen...")  
    connection = mysql.connector.connect(  
        host="192.168.1.60",  
        port=3306,  
        user="mysql",  
        password="xxx")  
    logging.info("Tilkobling etablert.")  
  
    # Opprett et markørobjekt for å utføre SQL-spørringer  
    cursor = connection.cursor()  
  
    # Hent alle databaser  
    logging.info("Utfører SHOW DATABASES-spørring...")  
    cursor.execute("SHOW DATABASES")  
  
    # Skriv ut alle databaser og tabellnavn i hver database  
    for (database,) in cursor.fetchall():  
        logging.info(f"Database: {database}")  
  
        # Bytt til gjeldende database  
        cursor.execute(f"USE {database}")  
  
        # Hent og skriv ut alle tabeller i gjeldende database  
        cursor.execute("SHOW TABLES")  
  
        for (table,) in cursor.fetchall():  
            logging.info(f"  Table: {table}")  
  
    # Lukk markøren og tilkoblingen  
    cursor.close()  
    connection.close()  
    logging.info("Tilkobling lukket.")  
  
except mysql.connector.Error as err:  
    logging.error(f"Error: {err}")  
except Exception as e:  
    logging.error(f"Unexpected error: {e}")

Etter å ha kjørt denne koden, avsluttes den direkte uten å skrive ut noen feilmeldinger.

Jeg sjekket tjenesteposten på MariaDB-serversiden og fant følgende feilmelding.

mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)

Forsøk på å løse problemet

Fordi MariaDB-serversiden kan motta tilkoblingsforespørselen, er konfigurasjonen av brannmuren til begge enhetene normal.

Jeg sjekket tillatelsene til påloggingsbrukeren og fant at den også var normal.

Jeg har søkt i mange ressurser og prøvd forskjellige metoder. Men uansett hva, har jeg ikke klart å løse dette problemet.

Til slutt prøvde jeg å bruke et annet python-bibliotek pymysql (versjon: 1.1.1) for å koble til MariaDB-serversiden, koden er som følger:

import pymysql  
  
# Koble 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 feilrapporter, koblet vellykket til og skrev ut MariaDB-versjonen.

Men jeg vet fortsatt ikke hvorfor jeg ikke kunne koble til før.

Andre versjoner av denne nettsiden

Denne artikkelen finnes i flere språkversjoner.

Hvis du vil legge igjen en kommentar, kan du besøke følgende nettside:

ZH EN ZH-TW JA

Disse nettsidene støtter bare surfing, og du kan ikke legge igjen kommentarer eller meldinger, men de gir flere språkalternativer og har kortere lastetid:

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 artikkelen er oversatt fra Chinese (Simplified) til Norwegian av AI.