BackEnd/RDBMS

[MySQL 8.0] Node.js 프로젝트에서 MySQL 연동 오류 해결

Cune 2022. 10. 30. 18:09

 

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

 

-> 연동시 설정한 username, host가 사용자로 등록되어 있지 않을때 발생하는 오류같습니다!

 

 

1. 터미널로 MySQL bash 접속

docker exec -it mysql-local bash

저는 도커로 mysql을 설치했으며 이름은 'mysql-local'로 되어있어서 위에처럼 터미널에 입력했습니다. 상황에 맞게 변경해서 해주세요.

 

 

2. 루트계정으로 접속

/# mysql -u root -p
Enter password: test

저는 root 계정의 비밀번호를 test로 설정했었습니다.

 

 

3. 사용자 확인

mysql> use mysql;
mysql> select user, host from user;

전 다음과 같이 되어있습니다.

 

 

4. 기존 사용자 비밀번호 변경

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

비밀번호를 잊은경우나 변경하고자 하면 위의 방법대로 합니다.

 

 

5. 사용자 추가

MySQL> create user 'test1'@'%' IDENTIFIED BY 'test1';
Query OK, 0 rows affected (0.006 sec)

MySQL> grant all privileges ON *.* TO 'test1'@'%' with grant option;

MySQL> flush privileges;

MySQL> quit;

:/# exit;

username: test1

host: % (모든 ip 허용)

password: test1

유저를 생성하고 권한을 부여한 후 마칩니다.

 

 

6. 사용자 확인

추가한 test1 유저가 있는 걸 확인합니다.

 

 

7. 프로젝트에 생성한 username, host, password 를 가지고 접속하고 성공!

 


+ username이 'root'인 경우로 접속하려고 하면 계속 실패했어서 이유를 알아보는 중입니다. 

(비밀번호를 변경해봐도 실패하는데 왜일까...?)