ฉันใช้ไลบรารี 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 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