Používám mysql knihovnu mysql-connector-python a pokouším se připojit k databázi MariaDB na jiném zařízení v lokální síti, ale neúspěšně, a dokonce se program přímo ukončí bez jakýchkoli chybových hlášení.

Popis problému

Verze softwaru:

  • MariaDB server 10.11.6

  • mysql-connector-python 9.2.0

  • MariaDB server, IP adresa 192.168.1.60

  • Klient, IP adresa 192.168.1.35

Python kód:

import mysql.connector  
import logging  
  
# Konfigurace protokolování  
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')  
  
try:  
    logging.info("Připojuji se k databázi...")  
    connection = mysql.connector.connect(  
        host="192.168.1.60",  
        port=3306,  
        user="mysql",  
        password="xxx")  
    logging.info("Připojení navázáno.")  
  
    # Vytvoření kurzorového objektu pro provádění SQL dotazů  
    cursor = connection.cursor()  
  
    # Získání všech databází  
    logging.info("Provádím dotaz SHOW DATABASES...")  
    cursor.execute("SHOW DATABASES")  
  
    # Výpis všech databází a tabulek v každé databázi  
    for (database,) in cursor.fetchall():  
        logging.info(f"Databáze: {database}")  
  
        # Přepnutí na aktuální databázi  
        cursor.execute(f"USE {database}")  
  
        # Získání a výpis všech tabulek v aktuální databázi  
        cursor.execute("SHOW TABLES")  
  
        for (table,) in cursor.fetchall():  
            logging.info(f"  Tabulka: {table}")  
  
    # Uzavření kurzoru a připojení  
    cursor.close()  
    connection.close()  
    logging.info("Připojení uzavřeno.")  
  
except mysql.connector.Error as err:  
    logging.error(f"Chyba: {err}")  
except Exception as e:  
    logging.error(f"Neočekávaná chyba: {e}")

Po spuštění tohoto kódu se program přímo ukončí bez výpisu jakýchkoli chybových hlášení.

V záznamech služby MariaDB serveru jsem nalezl následující chybové hlášení.

mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)

Pokusy o řešení problému

Protože server MariaDB přijímá požadavky na připojení, konfigurace firewallu na obou zařízeních je v pořádku.

Zkontroloval jsem oprávnění přihlašovacího uživatele a zjistil jsem, že jsou také v pořádku.

Hledal jsem mnoho informací a zkoušel různé metody. Nicméně, problém se mi nepodařilo vyřešit.

Nakonec jsem zkusil použít jinou python knihovnu pymysql (verze: 1.1.1) pro připojení k serveru MariaDB, kód:

import pymysql  
  
# Připojení k serveru MariaDB  
conn = pymysql.connect(  
    host="192.168.1.60",  
    port=3306,  
    user="mysql",  
    password="xxx"  
)  
  
cursor = conn.cursor()  
cursor.execute("SELECT VERSION()")  
print("Verze MariaDB:", cursor.fetchone()[0])  
  
cursor.close()  
conn.close()

Bez jakékoli chyby se úspěšně připojil a vytiskl verzi MariaDB.

Ale stále nevím, proč se předtím nepodařilo připojit.

Další verze této webové stránky

Tento článek má více jazykových verzí.

Pokud chcete přidat komentář, navštivte následující stránky:

ZH EN ZH-TW JA

Tyto webové stránky podporují pouze prohlížení a nelze na nich komentovat, ale poskytují více jazykových možností a kratší dobu načítá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

Tento článek byl přeložen z Chinese (Simplified) do Czech pomocí AI.