J’utilise la bibliothèque mysql-connector-python
de mysql pour tenter de me connecter à la base de données MariaDB
d’autres appareils sur le réseau local, mais cela échoue, et se ferme directement sans afficher d’informations d’erreur.
Description du problème
Version du logiciel :
-
MariaDB server 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB server, IP est 192.168.1.60
-
Client, IP est 192.168.1.35
Code Python comme suit :
import mysql.connector
import logging
# 配置日志记录
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
try:
logging.info("Connecting to the database...")
connection = mysql.connector.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx")
logging.info("Connection established.")
# 创建一个游标对象,用于执行 SQL 查询
cursor = connection.cursor()
# 获取所有数据库
logging.info("Executing SHOW DATABASES query...")
cursor.execute("SHOW DATABASES")
# 打印所有数据库及每个数据库中的表名
for (database,) in cursor.fetchall():
logging.info(f"Database: {database}")
# 切换到当前数据库
cursor.execute(f"USE {database}")
# 获取并打印当前数据库中的所有表
cursor.execute("SHOW TABLES")
for (table,) in cursor.fetchall():
logging.info(f" Table: {table}")
# 关闭游标和连接
cursor.close()
connection.close()
logging.info("Connection closed.")
except mysql.connector.Error as err:
logging.error(f"Error: {err}")
except Exception as e:
logging.error(f"Unexpected error: {e}")
Après avoir exécuté ce code, il se ferme directement sans afficher d’informations d’erreur.
J’ai consulté l’historique des services du serveur MariaDB
et j’ai trouvé le message d’erreur suivant.
mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)
Tentatives de résolution du problème
Étant donné que le serveur MariaDB
peut recevoir la demande de connexion, la configuration du pare-feu des deux appareils est normale.
J’ai vérifié les autorisations de l’utilisateur de connexion et j’ai constaté qu’elles étaient également normales.
J’ai cherché de nombreuses informations et essayé différentes méthodes. Mais quoi qu’il arrive, je n’ai jamais pu résoudre ce problème.
Enfin, j’ai essayé d’utiliser une autre bibliothèque python pymysql
(version : 1.1.1) pour me connecter au serveur MariaDB
, avec le code suivant :
import pymysql
# 连接到 MariaDB 服务器
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()
Aucune erreur, la connexion a réussi et la version de MariaDB a été imprimée.
Mais je ne sais toujours pas pourquoi je n’ai pas pu me connecter auparavant.
Autres versions de cette page web
Cet article est disponible en plusieurs langues.
Si vous souhaitez publier un commentaire, veuillez visiter les pages web suivantes :
Ces pages web ne prennent en charge que la navigation et ne permettent pas de publier des commentaires ou des messages, mais elles offrent davantage d’options linguistiques et un temps de chargement plus court :
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
Cet article a été traduit du Chinese (Simplified) vers French par AI.