Я использую библиотеку mysql-connector-python
для mysql и пытаюсь подключиться к базе данных 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
Эта статья была переведена с Chinese (Simplified) на Russian с помощью AI.