저는 mysql의 mysql-connector-python 라이브러리를 사용하여 로컬 네트워크 내 다른 장치의 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

이 웹페이지는 보기만 지원하며 댓글을 게시하거나 메시지를 남길 수 없지만 더 많은 언어 옵션을 제공하고 로딩 시간이 더 짧습니다.

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)에서 Korean으로 번역되었습니다.