ฉันใช้ไลบรารี 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 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) เป็น Thai โดย AI