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:
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.