JS, TS/오류
[MySQL] NodeJS 연동 시 ER_NOT_SUPPORTED_AUTH_MODE 오류
주인 완
2024. 11. 26. 23:43
간단한 토이 프로젝트를 진행하는 도중 마주친 오류이다..🥺
무척 간단한 프로젝트여서, Express + JavaScript를 활용해 간단한 REST API를 두어 개 정도 구축하려는 찰나,
다음과 같은 오류를 발견했다..
Error: ER_NOT_SUPPORTED_AUTH_MODE:
Client does not support authentication protocol requested by server;
consider upgrading MySQL client
분명 엔드포인트, 사용자명, 암호 등을 알맞게 입력했는데, 계속 다음과 같은 에러 메세지가 나오면서 접속이 거부되는 것이다..
Express 공식 문서에서는 mysql 모듈을 설치하여 연동하라고 하는데, 연결은 계속 되지 않으니 무척 답답했다.
원인
MySQL 8.0 이상부터 보안상의 이유로 사용자를 인증하는 방식이 변경되었는데, 기존에 사용하던 mysql 모듈이 새로운 인증 방식을 지원하지 않아서 발생하는 문제였다..
- 8.0 이전 MySQL: mysql_native_password
- 8.0 이후 MySQL: SHA-2 Pluggable Authentication
해결
간단하다. 기존의 mysql 모듈을 지우고, mysql2 모듈을 설치해주면 된다.
모듈을 변경하는 방법 말고 MySQL에 직접 접속해 인증 플러그인을 변경하는 방법도 있지만, 기존 플러그인은 추후 9.0 버전에서는 완전히 삭제된다고 하니 mysql2 모듈을 사용하는 것이 바람직해 보인다!
참고:
https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html