Utilizo la biblioteca mysql-connector-python de mysql para intentar conectar con la base de datos MariaDB de otros dispositivos en la red de área local, pero falla y se cierra directamente sin mostrar ningún mensaje de error.

Descripción del problema

Versión del software:

  • MariaDB server 10.11.6

  • mysql-connector-python 9.2.0

  • MariaDB server, IP es 192.168.1.60

  • Cliente, IP es 192.168.1.35

El código de Python es el siguiente:

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}")

Después de ejecutar este código, se cierra directamente sin mostrar ningún mensaje de error.

Revisé los registros de servicio del lado del servidor MariaDB y encontré el siguiente mensaje de error.

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

Intentos de resolver el problema

Como el servidor MariaDB puede recibir la solicitud de conexión, la configuración del firewall de los dos dispositivos es normal.

Revisé los permisos del usuario de inicio de sesión y descubrí que también eran normales.

Busqué mucha información y probé varios métodos. Pero en cualquier caso, no he podido resolver este problema.

Finalmente, intenté usar otra biblioteca de Python pymysql (versión: 1.1.1) para conectar con el servidor MariaDB. El código es el siguiente:

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()

No hay ningún error, se conecta correctamente e imprime la versión de MariaDB.

Pero todavía no sé la razón por la que antes no podía conectarme.

Otras versiones de esta página web

Este artículo está disponible en varios idiomas.

Si desea publicar un comentario, visite la siguiente página web:

ZH EN ZH-TW JA

Estas páginas web solo admiten la navegación y no permiten publicar comentarios o mensajes, pero ofrecen más opciones de idioma y tienen un tiempo de carga más corto:

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

Este artículo ha sido traducido de Chinese (Simplified) a Spanish por AI.