ER NOT SUPPORTED AUTH MODE
Nodejs에서 MySQL 모듈을 사용하는데 아래와 같은 에러가 발생했다.
KHC@DESKTOP-TNMP2Q4 MINGW64 /g/MyHistory/Learning/node.js-mysql-1/node.js-mysql-1
$ node nodejs/mysql.js
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server;
...
...
MySQL 8.0버전으로 업그레이드 되면서 MySQL의 인증 방식(PAM; pluggable authentication methods)이 바뀌었다. 기존에는 mysql_native_password 방식이였었는데, 8.0버전부터는 Caching SHA-2 Pluggable Authentication 방식으로 바뀌었다고 한다. 그런데 nodejs의 mysql패키지는 아직 새로운 방식을 지원하지 않아서 에러가 발생한다.
추천하는 첫번째 방법은 새 PAM을 지원하는 mysql2 모듈을 설치하는 방법이다.
추천하지 않는 두번째 방법은 8.0 이전의 인증 방식으로 변경하는 방법이다.
(1) npm으로 mysql2 를 설치
앞서 설명했듯 node의 mysql패키지가 바뀐 인증 방식을 지원하지 않는다. 따라서 최신 업데이트가 이뤄진 mysql2를 사용하면 된다. mysql2
먼저 터미널을 열고 아래를 입력한다.
npm un mysql && npm i mysql2
이후 코드에 있는 require('mysql') 을 전부 require('mysql2')로 바꾸면 된다.
(2) mysql installer > server 옆에 reconfigure > Auth 설정가서 legacy 선택
(Windows에서 했습니다)
