MySQL 서버에 연결할 때 연결 문제 해결하기

Encountering connection problems while accessing a MySQL server is a common challenge for database users. These issues often arise due to incorrect configuration, user permissions, or compatibility problems. Below are the most common errors and their solutions to help you resolve connection issues efficiently.

1. 오류: 호스트 ‘xxx.xx.xxx.xxx’가 이 MySQL 서버에 연결할 수 없습니다

원인

이 오류는 MySQL 서버가 지정된 호스트 또는 사용자가 데이터베이스에 접근하는 것을 허용하지 않음을 나타냅니다. 이는 일반적으로 사용자 또는 클라이언트 호스트에 할당된 권한이 부족하기 때문입니다.

해결 방법

이 문제를 해결하려면 MySQL 명령 줄에서 사용자에게 필요한 권한을 부여하십시오:

MySQL

 

mysql> USE mysql; 
mysql> GRANT ALL ON *.* TO 'urUser'@'[urhostname]' IDENTIFIED BY 'urpassword'; 
mysql> FLUSH PRIVILEGES;

  • urUser urpassword를 실제 사용자 이름과 비밀번호로 바꾸십시오.
  • [urhostname]을 연결하려는 클라이언트의 호스트 이름 또는 IP 주소로 바꾸십시오.

문제가 지속되면 MySQL 서버에서 네트워킹이 활성화되어 있는지 확인하십시오. 최신 MySQL 버전에서는 MySQL 서버 인스턴스 구성 도구를 사용하여 TCP/IP 네트워킹을 활성화하십시오.

  1. TCP/IP 네트워킹 옵션이 선택되어 있는지 확인하십시오.
  2. 포트(기본값은 3306)를 지정하고 이 포트에 대한 방화벽 예외를 생성하십시오.

2. 오류: 지정된 호스트에 연결할 수 없습니다

원인

이 일반적인 오류는 서버 잘못 구성이나 잘못된 네트워크 설정 등 여러 이유로 발생할 수 있습니다.

해결 방법

문제를 해결하기 위해 다음 단계를 시도하십시오:

1. MySQL 서버가 실행 중인지 확인하십시오

  • Windows에서는 MySQL 서비스가 실행 중인지 확인하십시오.
  • 리눅스에서 서버 상태를 확인하려면:
    MySQL

    systemctl status mysql

2. TCP/IP 네트워킹 사용 설정

  • 일반적으로 my.ini 또는 my.cnf과 같은 이름으로 된 MySQL 구성 파일을 엽니다.
  • 라인 skip-networking이 주석 처리되었거나 제거되었는지 확인합니다.

3. 포트 번호 확인

  • 일반적으로 MySQL 서버는 포트 3306에서 실행됩니다.
  • MySQL 구성 파일(my.ini 또는 my.cnf)에서 포트 번호를 확인합니다.

4. 방화벽 규칙

  • 방화벽이 MySQL 포트를 차단하지 않도록 확인합니다. 필요한 경우 포트 3306에 대한 예외를 추가합니다.

3. 오류: 사용자 ‘사용자이름’@’호스트이름’에 대한 액세스가 거부되었습니다 (비밀번호 사용: YES)

원인

이 오류는 일반적으로 잘못된 로그인 자격 증명(예: 잘못된 사용자 이름 또는 비밀번호)에 의해 발생합니다.

해결 방법

사용 중인 사용자 이름과 암호를 다시 확인합니다. 다음 사항을 확인하세요:

  • 사용자 이름과 비밀번호가 MySQL에서 설정한 것과 일치합니다.
  • 사용자는 특정 데이터베이스 또는 호스트에 액세스 권한이 부여되었습니다.
    MySQL

     

    GRANT ALL ON dbName.* TO 'UserName'@'HostName' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;

‘dbName’, ‘UserName’, ‘HostName’, 및 ‘password’를 실제 데이터베이스 이름, 사용자 이름, 호스트 이름 및 비밀번호로 대체하십시오.

4. 오류: 클라이언트가 서버에서 요청한 인증 프로토콜을 지원하지 않음; MySQL 클라이언트를 업그레이드하는 것을 고려하십시오

원인

이 오류는 MySQL 8.0에 연결할 때 흔히 발생하는데, 이는 caching_sha2_password라는 새로운 인증 프로토콜을 사용하기 때문입니다. 오래된 MySQL 클라이언트나 도구는 이 프로토콜을 지원하지 않을 수 있습니다.

해결책

옵션 1: 클라이언트 업그레이드

최신 버전의 MySQL 클라이언트 또는 도구로 업그레이드하세요. 예를 들어, Data Loader를 사용 중인 경우, 최신 인증 프로토콜을 지원하는 4.9 이상의 버전으로 업그레이드하세요.

옵션 2: 구형 클라이언트를 위한 우회 방법

클라이언트를 업그레이드할 수 없는 경우, MySQL 8.0에서 호환되는 사용자를 생성하는 방법은 다음과 같습니다:

1. 새 사용자를 생성합니다.

MySQL

 

mysql> CREATE USER 'user1'@'localhost' IDENTIFIED BY 'passxxx';

2. 필요한 권한을 부여합니다.

MySQL

 

mysql> GRANT ALL ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'passxxx';

3. 인증 방법을 변경합니다.

MySQL

 

mysql> ALTER USER 'user1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'passxxx';

이 명령은 사용자의 인증 방법을 구형 클라이언트와 호환되는 레거시 mysql_native_password 프로토콜로 되돌립니다.

이제 이 사용자(user1)를 사용하여 구형 도구 또는 라이브러리로 MySQL 8.0에 연결할 수 있습니다.

문제 해결 MySQL 연결 문제는 종종 구성 설정, 사용자 권한 또는 클라이언트와 서버 간의 호환성 문제를 다루는 것과 관련이 있습니다. 위에 설명된 솔루션을 따르면 권한 거부, 호스트 잘못 구성 또는 프로토콜 불일치와 같은 일반적인 오류를 해결할 수 있습니다.

지속적인 데이터베이스 관리를 위해 MySQL 서버와 도구를 최신 상태로 유지하고 사용자 권한 및 네트워크 설정을 주기적으로 검토하여 향후 연결 문제를 피하세요.

Source:
https://dzone.com/articles/troubleshooting-mysql-connection-issues