MySQL 계정 인증 방식 오류 발생 시 해결 방법

ER_NOT_SUPPORTED_AUTH_MODE

MySQL 계정 인증 방식 오류 발생 시 해결 방법

원인

MySQL 8부터는 SHA2 방식으로 암호화한 authentication_string을 활용해 사용자를 인증합니다. MySQL 8 서버와 통신하는 클라이언트가 해당 기능을 지원하지 않는 버전일 때 위 오류가 발생합니다.

해결 방법

서버의 MySQL 인증 방식을 Legacy (MySQL 5.0)으로 전환하거나, 서버의 MySQL에서 사용자의 IDENTIFY 방식을 mysql_native_password에서 임의로 정한 비밀번호로 바꾸면 됩니다.

여러 종류의 클라이언트에서 접속할 수 있도록 만든 DB 서버라면 MySQL 인증 방식을 바꿔버리는 것보다는 특정 사용자의 인증 방식만 수정하는 것이 낫습니다. 그래서 위 사진의 사례에서는 2번을 택했습니다.

방법 1. MySQL 전체 사용자에 대한 인증 방식 변경

mysql 설정 파일에 다음 행을 추가하면 됩니다.

[mysqld]
default_authentication_plugin=mysql_native_password

방법 2. 특정 유저의 인증 방식 변경

MySQL CLI 환경에서 다음과 같이 조치하면 됩니다.

// 1. 유저 생성
CREATE USER 'username'@'ip-constraint' IDENTIFIED BY 'password';

// 2. 원하는 데이터베이스의 권한 부여
GRANT ALL PRIVILEGES ON database.* to 'username'@'ip-constraint';

// 3. 권한 적용
FLUSH PRIVILEGES;

// 4. mysql_native_password 방식인 임의의 비밀번호를 사용한 인증으로 변경
ALTER USER 'username'@'ip-constraint' IDENTIFIED WITH mysql_native_password BY 'arbitrary-password';

// 5. 권한 적용
FLUSH PRIVILEGES;