Χρησιμοποιώ τη βιβλιοθήκη 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 μπορεί να λάβει το αίτημα σύνδεσης, οι διαμορφώσεις firewall και των δύο συσκευών είναι φυσιολογικές.

Έλεγξα τα δικαιώματα του χρήστη σύνδεσης και βρήκα ότι ήταν επίσης φυσιολογικά.

Έψαξα πολλές πληροφορίες και δοκίμασα διάφορες μεθόδους. Όμως, δεν μπόρεσα να λύσω αυτό το πρόβλημα με κανέναν τρόπο.

Τέλος, προσπάθησα να χρησιμοποιήσω μια άλλη βιβλιοθήκη 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

Αυτές οι ιστοσελίδες υποστηρίζουν μόνο περιήγηση, δεν μπορούν να δημοσιεύσουν σχόλια ή μηνύματα, αλλά παρέχουν περισσότερες επιλογές γλώσσας και έχουν μικρότερο χρόνο φόρτωσης:

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) σε Greek μέσω AI.