Utilizzo la libreria mysql-connector-python di mysql, tentando di connettermi al database MariaDB di altri dispositivi nella rete locale, ma fallisce, e si chiude direttamente senza visualizzare alcun messaggio di errore.

Descrizione del problema

Versioni software:

  • MariaDB server 10.11.6

  • mysql-connector-python 9.2.0

  • MariaDB server, IP è 192.168.1.60

  • Client, IP è 192.168.1.35

Codice Python:

import mysql.connector  
import logging  
  
# Configura la registrazione dei log  
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')  
  
try:  
    logging.info("Connessione al database...")  
    connection = mysql.connector.connect(  
        host="192.168.1.60",  
        port=3306,  
        user="mysql",  
        password="xxx")  
    logging.info("Connessione stabilita.")  
  
    # Crea un oggetto cursore per eseguire query SQL  
    cursor = connection.cursor()  
  
    # Ottieni tutti i database  
    logging.info("Esecuzione della query SHOW DATABASES...")  
    cursor.execute("SHOW DATABASES")  
  
    # Stampa tutti i database e i nomi delle tabelle in ciascun database  
    for (database,) in cursor.fetchall():  
        logging.info(f"Database: {database}")  
  
        # Passa al database corrente  
        cursor.execute(f"USE {database}")  
  
        # Ottieni e stampa tutte le tabelle nel database corrente  
        cursor.execute("SHOW TABLES")  
  
        for (table,) in cursor.fetchall():  
            logging.info(f"  Table: {table}")  
  
    # Chiudi il cursore e la connessione  
    cursor.close()  
    connection.close()  
    logging.info("Connessione chiusa.")  
  
except mysql.connector.Error as err:  
    logging.error(f"Errore: {err}")  
except Exception as e:  
    logging.error(f"Errore inatteso: {e}")

Dopo aver eseguito questo codice, si chiude direttamente senza visualizzare alcun messaggio di errore.

Ho controllato i log del server MariaDB e ho trovato il seguente messaggio di errore.

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

Tentativi di risoluzione del problema

Poiché il server MariaDB può ricevere la richiesta di connessione, significa che la configurazione del firewall di entrambi i dispositivi è normale.

Ho controllato i permessi dell’utente di accesso e ho scoperto che sono normali.

Ho cercato molte informazioni e ho provato vari metodi. Ma in ogni caso, non sono riuscito a risolvere questo problema.

Infine, ho provato a utilizzare un’altra libreria Python pymysql (versione: 1.1.1) per connettermi al server MariaDB, il codice è il seguente:

import pymysql  
  
# Connessione al server MariaDB  
conn = pymysql.connect(  
    host="192.168.1.60",  
    port=3306,  
    user="mysql",  
    password="xxx"  
)  
  
cursor = conn.cursor()  
cursor.execute("SELECT VERSION()")  
print("Versione di MariaDB:", cursor.fetchone()[0])  
  
cursor.close()  
conn.close()

Nessun errore, connessione riuscita e stampa della versione di MariaDB.

Ma non so ancora perché la connessione precedente non funzionava.

Altre versioni di questa pagina web

Questo articolo è disponibile in diverse lingue.

Se desideri pubblicare un commento, visita le seguenti pagine web:

ZH EN ZH-TW JA

Queste pagine web supportano solo la navigazione e non consentono di pubblicare commenti o messaggi, ma offrono più opzioni di lingua e tempi di caricamento più rapidi:

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

Questo articolo è stato tradotto da Chinese (Simplified) a Italian da AI.