Я використовую бібліотеку 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 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 за допомогою штучного інтелекту.