Amazon Aurora DB 클러스터에 연결하려고 할 때 액세스 거부 오류가 발생하는 이유는 무엇입니까?

4분 분량
0

Amazon Aurora MySQL 호환 버전 DB 클러스터에 인증하려고 하는데 “Access denied” 오류가 발생합니다.

간략한 설명

Aurora MySQL 호환 DB 클러스터에 인증하려면 다음 옵션 중 하나를 사용할 수 있습니다.

“Access denied” 오류는 일반적으로 잘못된 사용자 이름 또는 암호를 입력했기 때문에 발생합니다. 하지만 이 오류에는 다음과 같은 다른 원인이 있습니다.

  • 입력한 사용자 이름 또는 암호가 유효하지 않습니다.
  • 잘못된 호스트를 사용하여 연결을 시도했습니다.
  • 사용자가 존재하지 않습니다.
  • 사용자가 존재하지만 클라이언트 호스트에 연결 권한이 없습니다.
  • SSL이 필요하지만 클라이언트가 SSL을 사용하지 않습니다.
  • 암호의 특수 문자는 Bash에서 변환되고 있습니다.
  • IAM 인증이 꺼졌습니다.
  • IAM 인증을 사용할 때 IAM 역할 권한이 충분하지 않습니다.
  • 잘못된 연결 문자열이 있습니다.
  • 잘못된 인증 자격 증명이 Amazon RDS 프록시에 연결하는 데 사용됩니다. 이는 기본 사용자 이름/암호 모드를 사용할 때 적용됩니다.
  • 클라이언트와 연결된 AWS Identity and Access Management(IAM) 사용자 또는 역할에 Amazon RDS 프록시에 연결할 수 있는 권한이 없습니다. 이는 IAM DB 인증을 사용할 때 적용됩니다.

이러한 오류에 대한 자세한 내용은 Access denied에 대한 MySQL 설명서를 참조하세요.

해결 방법

DB 인스턴스가 연결을 허용하는지 확인

DB 인스턴스가 현재 AVAILABLE 상태인지 확인합니다. 자세한 내용은 DB 인스턴스 상태에 대한 Amazon Relational Database Service(Amazon RDS)Aurora 설명서를 참조하세요. 또한, Amazon RDS DB 인스턴스에 연결할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?를 참조하세요.

DB 자격 증명을 사용하는 연결 문제 해결

잘못된 암호

데이터베이스에 연결하려고 할 때 올바른 사용자 이름과 암호를 입력했는지 확인하십시오. 암호에 특수 문자를 사용하지 마십시오. 자세한 내용은 Amazon RDS DB 인스턴스의 기본 사용자 암호를 재설정하려면 어떻게 해야 합니까?를 참조하세요.

잘못된 사용자 이름

사용자가 존재하는지 확인:

mysql> SELECT user FROM mysql.user WHERE User='username';

사용자가 존재하지 않는 경우 새 사용자를 생성하십시오.

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'new-password-here';
mysql> FLUSH
        PRIVILEGES;

자세한 내용은 기본 사용자 계정 권한을 참조하세요.

잘못된 호스트에서 연결

DB 인스턴스에 연결하려고 할 때는 올바른 호스트(-h 플래그 포함)와 포트를 지정해야 합니다. Amazon RDS 콘솔인스턴스 페이지를 검토하여 Amazon RDS 호스트 이름과 포트를 확인합니다. 자세한 내용은 Amazon Aurora DB 인스턴스에 연결을 참조하세요.

사용자가 존재하지만 클라이언트 호스트에 클라이언트 연결 권한이 없습니다.

어떤 호스트 사용자/호스트 MySQL에서 연결을 허용하는지 확인하십시오.

mysql> SELECT host, user FROM mysql.user WHERE User='username';

그런 다음 올바른 호스트(클라이언트 IP)를 사용하거나 가능한 IP 주소와 일치하도록 %(와일드카드)를 사용하여 사용자를 생성합니다.

mysql> CREATE USER 'dbuser'@'%' IDENTIFIED BY 'new-password-here';

SSL이 필요하지만 클라이언트가 SSL을 사용하지 않음

DB 인스턴스에서 다음 쿼리를 실행하여 SSL을 적용한 사용자가 있는지 확인합니다.

mysql> SELECT * FROM mysql.user WHERE ssl_type <> '';

사용자에게 SSL이 적용된 경우 SSL을 사용하여 연결해야 합니다. 자세한 내용은 SSL/TLS를 사용하여 DB 클러스터에 대한 연결 암호화하기 섹션을 참조하세요.

중복 사용자

동일한 사용자 이름을 가진 사용자가 있는지 확인합니다.

mysql> SELECT host, user FROM mysql.user WHERE User='username';

이 문제를 해결하려면 다른 사용자(중복 기본 사용자) 또는 다른 사용자를 삭제할 권한이 있는 사용자를 사용하여 로그인하십시오. 두 번째 사용자가 삭제되면 첫 번째 사용자는 정상적으로 연결할 수 있습니다.

자세한 내용은 MySQL을 실행하는 Amazon RDS DB 인스턴스에 다른 기본 사용자를 만들려면 어떻게 해야 합니까?를 참조하세요.

암호의 특수 문자가 Bash에서 변환되고 있음

암호를 작은 따옴표로 묶어 Bash가 특수 문자를 해석하지 못하도록 합니다.

연결 패킷에 올바른 정보가 포함되어 있지 않음

연결 패킷을 가져오는 데 connect_timeout초 이상 걸립니다. DBA와 논의한 후 이 DB 파라미터의 값을 조정하면 쿼리와 워크로드를 더 잘 이해할 수 있습니다.

max_allowed_packet 변수 값이 너무 작거나 쿼리에 DB 인스턴스에 할당한 것보다 더 많은 메모리가 필요함

max_allowed_packet 값이 기본적으로 작습니다. 이렇게 하면 값이 크고 정확하지 않을 수 있는 패킷을 포착할 수 있습니다. 큰 BLOB 열이나 긴 문자열을 사용하는 경우 max_allowed_packet 값을 늘리십시오. 자세한 내용은 Amazon RDS for MySQL에 대한 파라미터를 구성하는 모범 사례를 참조하세요.

IAM 인증을 사용하는 연결 문제 해결

연결하려면 사용자가 IAM 보안 인증 정보를 사용하여 Amazon RDS MySQL DB 인스턴스에서 인증하려면 어떻게 해야 하나요?를 참조하세요.

연결할 수 없다면 IAM 인증을 사용하여 Amazon RDS for MySQL에 연결하려고 할 때 액세스 거부 오류가 발생하는 이유는 무엇입니까?를 참조하세요.

Amazon RDS 프록시를 사용하는 연결 문제 해결

연결하려면 Amazon RDS Proxy를 사용하여 Amazon RDS MySQL DB 인스턴스 또는 Aurora MySQL DB 클러스터에 연결하려면 어떻게 해야 합니까?를 참조하세요.

연결할 수 없다면, RDS 프록시를 사용하여 Amazon RDS DB 또는 Amazon Aurora DB 인스턴스에 연결할 수 없는 이유는 무엇인가요?를 참조하세요.


관련 정보

Amazon Aurora MySQL DB 클러스터 연결

MariaDB, MySQL 및 PostgreSQL에 대한 IAM 데이터베이스 인증

파라미터 그룹 작업

VPC의 퍼블릭 또는 프라이빗 서브넷을 사용하는 Amazon RDS DB 인스턴스에 대한 연결 문제를 해결하려면 어떻게 해야 합니까?

AWS 공식
AWS 공식업데이트됨 일 년 전