* 에러 해결 - 증상 *
Node.js에서 MySQL을 접근하려고 하니 다음과 같은 오류 발생
에러 내용 :
Error connecting to MySQL: Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client ...
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
해결 방법
mysql 접속
mysql -u root -p
1. 외부 접속 허용 확인
1) mysql 외부접속 허용이 되어있는지 확인
select host, user from mysql.user;
위와 같이 host에 localhost 이외 주소가 없다면 외부 접속 허용이 불가능한 상황!
2) 사용자 등록 필요
host 주소에 %로 지정해 서버와 같이 외부에서 사용될 수 있도록 해준다
(MySQL에서 %는 와일드카드로 사용됨)
//생성
CREATE USER 'nodejs'@'%' identified by 'ReactNode1!';
//권한 설정
GRANT ALL PRIVILEGES ON *.* to 'nodejs'@'%';
//새로고침
flush privileges;
SELECT Host,User,plugin,authentication_string FROM mysql.user;
2. 비밀번호 플러그인 확인
MySQL 8.0에서는 MySQL 패스워드 플러그인 "caching_sha2_password" 때문에 에러가 발생하기도 한다
1) 현재 플러그인 확인
select host, user, plugin, authentication_string from mysql.user;
2) 플러그인 바꾸기
> mysql_native_password 플러그인으로 변경
ALTER USER 'nodejs'@'%' IDENTIFIED WITH mysql_native_password BY 'ReactNode1!';
최종 확인
select host, user, plugin, authentication_string from mysql.user;
'개발 기록 > backend' 카테고리의 다른 글
[백엔드] 프리온보딩 - AWS, docker 사전미션 (2) | 2024.02.21 |
---|---|
[review] <객체지향의 사실과 오해> (0) | 2024.01.25 |
[백엔드]프리온보딩 객체지향 마지막 후기 - 내 코드를 안전하게 변경하는 방법 (0) | 2024.01.22 |
[백엔드] 프리온보딩 객체지향 3차시 - 객체지향 설계를 돕는 디자인패턴 (0) | 2024.01.17 |
[review] <함께 자라기 - 애자일로 가는 길> (0) | 2024.01.12 |