Tôi sử dụng thư viện mysql-connector-python
của mysql để thử kết nối đến cơ sở dữ liệu MariaDB
của các thiết bị khác trong mạng LAN, nhưng không thành công và bị thoát trực tiếp mà không có bất kỳ thông tin lỗi nào.
Mô tả vấn đề
Phiên bản phần mềm:
-
MariaDB server 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB server, IP là 192.168.1.60
-
Máy khách, IP là 192.168.1.35
Mã Python như sau:
import mysql.connector
import logging
# Cấu hình ghi log
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
try:
logging.info("Đang kết nối đến cơ sở dữ liệu...")
connection = mysql.connector.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx")
logging.info("Đã thiết lập kết nối.")
# Tạo một đối tượng cursor để thực hiện truy vấn SQL
cursor = connection.cursor()
# Lấy tất cả các cơ sở dữ liệu
logging.info("Đang thực hiện truy vấn SHOW DATABASES...")
cursor.execute("SHOW DATABASES")
# In tất cả các cơ sở dữ liệu và tên bảng trong mỗi cơ sở dữ liệu
for (database,) in cursor.fetchall():
logging.info(f"Cơ sở dữ liệu: {database}")
# Chuyển sang cơ sở dữ liệu hiện tại
cursor.execute(f"USE {database}")
# Lấy và in tất cả các bảng trong cơ sở dữ liệu hiện tại
cursor.execute("SHOW TABLES")
for (table,) in cursor.fetchall():
logging.info(f" Bảng: {table}")
# Đóng cursor và kết nối
cursor.close()
connection.close()
logging.info("Đã đóng kết nối.")
except mysql.connector.Error as err:
logging.error(f"Lỗi: {err}")
except Exception as e:
logging.error(f"Lỗi không mong muốn: {e}")
Sau khi chạy đoạn mã này, nó thoát trực tiếp mà không đưa ra bất kỳ thông tin lỗi nào.
Tôi xem nhật ký dịch vụ của máy chủ MariaDB
và thấy thông tin lỗi sau.
mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)
Thử giải quyết vấn đề
Vì máy chủ MariaDB
có thể nhận được yêu cầu kết nối, nên cấu hình tường lửa của cả hai thiết bị đều bình thường.
Tôi đã kiểm tra quyền của người dùng đăng nhập và thấy nó cũng bình thường.
Tôi đã tìm kiếm rất nhiều tài liệu và thử nhiều cách khác nhau. Nhưng dù thế nào, tôi vẫn không thể giải quyết được vấn đề này.
Cuối cùng, tôi đã thử sử dụng một thư viện python khác là pymysql
(phiên bản: 1.1.1) để kết nối đến máy chủ MariaDB
, mã như sau:
import pymysql
# Kết nối đến máy chủ MariaDB
conn = pymysql.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx"
)
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print("Phiên bản MariaDB:", cursor.fetchone()[0])
cursor.close()
conn.close()
Không có bất kỳ lỗi nào, kết nối thành công và in ra phiên bản MariaDB.
Nhưng vẫn không biết lý do tại sao trước đó không thể kết nối.
Các phiên bản khác của trang web này
Bài viết này có nhiều phiên bản ngôn ngữ.
Nếu bạn muốn bình luận, vui lòng truy cập các trang web sau:
Các trang web này chỉ hỗ trợ duyệt xem, không thể đăng bình luận hoặc tin nhắn, nhưng cung cấp nhiều tùy chọn ngôn ngữ hơn và thời gian tải nhanh hơn:
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
Bài viết này được dịch từ Chinese (Simplified) sang Vietnamese bằng AI.