我使用 mysql 的 mysql-connector-python
库,尝试连接局域网内其他设备的 MariaDB
数据库,但是失败了,而且是直接退出,没有输出任何错误信息。
问题描述
软件版本:
-
MariaDB server 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB server, IP 为 192.168.1.60
-
客户端,IP 为 192.168.1.35
Python 代码如下:
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}")
运行这段代码之后,直接退出,没有输出任何错误信息。
我查看 MariaDB
服务器端的服务记录,发现有如下错误信息。
mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)
尝试解决问题
因为 MariaDB
服务器端可以收到连接的请求,所以说两个设备的防火墙的配置都是正常的。
我检查了登录用户的权限,发现也是正常的。
我查找了很多资料,尝试了各种方法。但是无论如何,一直无法解决这个问题。
最后,尝试使用另外一个 python 库 pymysql
(版本: 1.1.1) 连接 MariaDB
服务器端,代码如下:
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()
没有任何报错,成功连接并打印 MariaDB 的版本。
但是还是不知道之前无法连接的原因。
本网页的其他版本
本文章有多种语言的版本。
如果您想发表评论,请访问以下网页:
这些网页仅支持浏览,无法发表评论或留言,但提供了更多语言选项,并且加载时间更短:
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