개발 잘 하고 싶다 => 알고 쓰자/ERROR(삽질) 모음

[mysql 8] ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

장 상 현 2023. 8. 30.

환경

OS: mac arm64 (M1)

 

SERVER: nest.js

원인

1. MySQL 서버에서 외부 접속이 허가되어 있지 않다.

 

2. MySQL 8버전부터 새로운 패스워드 플러그인 'caching_sha2_password' 를 사용하는데,

    현재(2023.08.30 시점) nest.js 에서 지원되지 않는다.

해결방법

1. 외부 접속 허용 확인

# host 에 localhost 만 있으면 외부 접속 허용이 불가능한 상태!

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)
# MySQL에서 %는 와일드카드로 사용된다!
# 연결하고자 하는 서버 등, 외부 접속을 허용하기 위해 host주소에 %를 추가하면 된다!

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> select host, user, plugin, authentication_string from mysql.user;

+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | root             | caching_sha2_password | $A$005$jpaap`,U(D>=a3`8Z13gFfM1FgVsPoI..t12b1BMZG5ApI/F38xd6Z3S9C |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | caching_sha2_password | $A$005$@x"@w
c`Y?miQ2CEvUPKiPfCs9MTLD.ijIipW923C4W/LK8WBYSFpcvY3 |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
# 플러그인 변경!
mysql> select host, user, plugin, authentication_string from mysql.user;

# 변경 사항 확인!
mysql> select host, user, plugin, authentication_string from mysql.user; 

+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | root             | mysql_native_password | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B                              |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | caching_sha2_password | $A$005$@x"@w
c`Y?miQ2CEvUPKiPfCs9MTLD.ijIipW923C4W/LK8WBYSFpcvY3 |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+

 

접속이 잘 된다!

 ✘ SaHy 🌙   ~/workspace/nest-practice/board   main ±  npm run start

> board@0.0.1 start
> nest start

[Nest] 42245  - 08/30/2023, 2:33:20 AM     LOG [NestFactory] Starting Nest application...
[Nest] 42245  - 08/30/2023, 2:33:20 AM     LOG [InstanceLoader] TypeOrmModule dependencies initialized +31ms
[Nest] 42245  - 08/30/2023, 2:33:21 AM     LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +54ms
[Nest] 42245  - 08/30/2023, 2:33:21 AM     LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 42245  - 08/30/2023, 2:33:21 AM     LOG [InstanceLoader] AppModule dependencies initialized +1ms
[Nest] 42245  - 08/30/2023, 2:33:21 AM     LOG [RoutesResolver] BoardController {/boards}: +5ms
[Nest] 42245  - 08/30/2023, 2:33:21 AM     LOG [RouterExplorer] Mapped {/boards, GET} route +2ms
[Nest] 42245  - 08/30/2023, 2:33:21 AM     LOG [RouterExplorer] Mapped {/boards, POST} route +0ms
[Nest] 42245  - 08/30/2023, 2:33:21 AM     LOG [NestApplication] Nest application successfully started +1ms

댓글