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:
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.