Я использую библиотеку 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

Эти веб-страницы поддерживают только просмотр, на них нельзя оставлять комментарии или сообщения, но они предоставляют больше языковых опций и более быстрое время загрузки:

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.