본문 바로가기

오류해결

[MySQL] ER_NOT_SUPPORTED_AUTH_MODE

1. 증상

sequelize를 사용해 mysql에 접속을 시도하는데 해당 오류 발생

 

2. 원인

MySQL8 에서 지원하는 인증방식을 node의 mysql 드라이버에서 지원하지 않기 때문에 발생하는 문제

 

3. 해결방법

(1) 직관적인 방법으로, 그냥 MySQL의 인증 방식을 이전 버전으로 낮춰주면 된다.

MySQL Installer를 사용하면 간단하게 재설정이 가능하다.

(2) MySQL 계정의 인증 방법을 변경해주면 된다.

자세한 내용은 링크를 참조. 참고로 해결 방법으로 use mysql; update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'; 를 사용하라고 하는데, mysql2 드라이버를 사용하면 이걸로 해결이 안된다(mysql2에서 mysql_native_password를 지원하지 않음) 글을 읽어 보니 AuthSwitch handler를 사용하라는 것 같다.

 

개인적으로는 반드시 SHA256 기반의 인증 방식을 고집할 이유가 없어서 그냥 (1) 방법으로 인증 방식을 변경했다.

다시 깔아야 되는줄 알고.. 한참 다른 방법을 찾아다녔는데 인스톨러로 간단히 변경이 가능하다.