Eu uso a biblioteca mysql-connector-python do mysql para tentar conectar ao banco de dados MariaDB de outros dispositivos na rede local, mas falha e sai diretamente, sem exibir nenhuma mensagem de erro.

Descrição do problema

Versões do software:

  • MariaDB server 10.11.6

  • mysql-connector-python 9.2.0

  • MariaDB server, IP é 192.168.1.60

  • Cliente, IP é 192.168.1.35

O código Python é o seguinte:

import mysql.connector  
import logging  
  
# Configurar o registro de log  
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')  
  
try:  
    logging.info("Conectando ao banco de dados...")  
    connection = mysql.connector.connect(  
        host="192.168.1.60",  
        port=3306,  
        user="mysql",  
        password="xxx")  
    logging.info("Conexão estabelecida.")  
  
    # Criar um objeto cursor para executar consultas SQL  
    cursor = connection.cursor()  
  
    # Obter todos os bancos de dados  
    logging.info("Executando a consulta SHOW DATABASES...")  
    cursor.execute("SHOW DATABASES")  
  
    # Imprimir todos os bancos de dados e o nome de cada tabela em cada banco de dados  
    for (database,) in cursor.fetchall():  
        logging.info(f"Banco de dados: {database}")  
  
        # Alternar para o banco de dados atual  
        cursor.execute(f"USE {database}")  
  
        # Obter e imprimir todas as tabelas no banco de dados atual  
        cursor.execute("SHOW TABLES")  
  
        for (table,) in cursor.fetchall():  
            logging.info(f"  Tabela: {table}")  
  
    # Fechar o cursor e a conexão  
    cursor.close()  
    connection.close()  
    logging.info("Conexão fechada.")  
  
except mysql.connector.Error as err:  
    logging.error(f"Erro: {err}")  
except Exception as e:  
    logging.error(f"Erro inesperado: {e}")

Depois de executar este código, ele sai diretamente, sem exibir nenhuma mensagem de erro.

Eu verifiquei os registros de serviço no lado do servidor MariaDB e encontrei as seguintes mensagens de erro.

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

Tentativa de resolver o problema

Como o servidor MariaDB pode receber a solicitação de conexão, a configuração do firewall de ambos os dispositivos é normal.

Verifiquei as permissões do usuário de login e descobri que também são normais.

Procurei muitas informações e tentei vários métodos. Mas, de qualquer forma, não consigo resolver este problema.

Finalmente, tentei usar outra biblioteca Python pymysql (versão: 1.1.1) para conectar ao servidor MariaDB, o código é o seguinte:

import pymysql  
  
# Conectar ao servidor MariaDB  
conn = pymysql.connect(  
    host="192.168.1.60",  
    port=3306,  
    user="mysql",  
    password="xxx"  
)  
  
cursor = conn.cursor()  
cursor.execute("SELECT VERSION()")  
print("Versão do MariaDB:", cursor.fetchone()[0])  
  
cursor.close()  
conn.close()

Não houve erros, a conexão foi estabelecida com sucesso e a versão do MariaDB foi impressa.

Mas ainda não sei o motivo da falha na conexão anterior.

Outras versões desta página

Este artigo tem versões em vários idiomas.

Se você quiser fazer um comentário, visite a seguinte página da web:

ZH EN ZH-TW JA

Essas páginas da web suportam apenas navegação e não permitem postar comentários ou mensagens, mas fornecem mais opções de idiomas e têm tempos de carregamento mais curtos:

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

Este artigo foi traduzido de Chinese (Simplified) para Portuguese por IA.