[MySQL 8.0] nestjs 연동시 에러 해결 ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

Nari.·2021년 8월 22일
3

1. 에러 메시지 확인

  code: 'ER_NOT_SUPPORTED_AUTH_MODE',
  errno: 1251,
  sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
  sqlState: '08004',
  fatal: true

2. 해결 방법

1. 외부 접속 허용 확인

# mysql 외부 접속 허용이 되어 있는지 확인
mysql> select host, user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)

위와같이 host에 localhost 이외의 주소가 없다면 외부 접속 허용이 불가능한 것이다.


MySQL에서 % 는 와일드 카드로 사용된다.
서버와 같은 외부에서 허용하도록 하려면 host주소에 %로 지정해주면 된다.

# MySQL8부터는 이렇게...
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

# 잘 생성되었는지 확인
mysql> select host, user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)


2. 비밀번호 플러그인 확인

MySQL 8.0에서는 MySQL 패스워드 플러그인 "caching_sha2_password" 때문에 클라이언트 프로그램에서 종종 지금과 같은 에러가 발생한다.

mysql> select host, user, plugin, authentication_string from mysql.user; 

위의 SQL 문으로 자신의 데이터베이스의 패스워드 플러그인을 확인할 수 있다.


문제를 찾았으니 플러그인을 바꿔보자.
"mysql_native_password" 플러그인으로 바꿔주면 정상 작동할 것이다.

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

잘 바뀐것을 확인할 수 있다 :-)



2개의 댓글

comment-user-thumbnail
2022년 2월 9일

덕분에 해결했습니다~!! >.< 너무 감사드려요!!

1개의 답글