ER_NOT_SUPPORTED_AUTH_MODE

HongChan Kim·2022년 3월 29일

ER NOT SUPPORTED AUTH MODE

Nodejs에서 MySQL 모듈을 사용하는데 아래와 같은 에러가 발생했다.

image

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. mysql2 설치 (추천)

(1) npm으로 mysql2 를 설치
앞서 설명했듯 node의 mysql패키지가 바뀐 인증 방식을 지원하지 않는다. 따라서 최신 업데이트가 이뤄진 mysql2를 사용하면 된다. mysql2

먼저 터미널을 열고 아래를 입력한다.

npm un mysql && npm i mysql2

이후 코드에 있는 require('mysql') 을 전부 require('mysql2')로 바꾸면 된다.

2. Legacy Authentication Method (추천안함)

(2) mysql installer > server 옆에 reconfigure > Auth 설정가서 legacy 선택

(Windows에서 했습니다)

image
image

profile
from Mechanic to Computer

0개의 댓글