أستخدم مكتبة 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) إلى Arabic.