Я використовую бібліотеку 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("Підключення до бази даних...")  
    connection = mysql.connector.connect(  
        host="192.168.1.60",  
        port=3306,  
        user="mysql",  
        password="xxx")  
    logging.info("З'єднання встановлено.")  
  
    # Створення об'єкта курсора для виконання SQL запитів  
    cursor = connection.cursor()  
  
    # Отримання всіх баз даних  
    logging.info("Виконання запиту SHOW DATABASES...")  
    cursor.execute("SHOW DATABASES")  
  
    # Виведення всіх баз даних та назв таблиць в кожній базі даних  
    for (database,) in cursor.fetchall():  
        logging.info(f"База даних: {database}")  
  
        # Перехід до поточної бази даних  
        cursor.execute(f"USE {database}")  
  
        # Отримання та виведення всіх таблиць у поточній базі даних  
        cursor.execute("SHOW TABLES")  
  
        for (table,) in cursor.fetchall():  
            logging.info(f"  Таблиця: {table}")  
  
    # Закриття курсора та з'єднання  
    cursor.close()  
    connection.close()  
    logging.info("З'єднання закрито.")  
  
except mysql.connector.Error as err:  
    logging.error(f"Помилка: {err}")  
except Exception as e:  
    logging.error(f"Неочікувана помилка: {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:", 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) на Ukrainian за допомогою штучного інтелекту.