אני משתמש בספריית 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
מאמר זה תורגם על ידי AI מ-Chinese (Simplified) ל- Hebrew.