본문 바로가기
[WEB] Back-End Framework & Library/Node.js, Express

Node.js 에서 MySQL 8.0 에 연결할 때 "does not support authentication protocol" 오류가 발생하는 경우

by 연구자 공학코드 2022. 10. 10.

공지사항

  1. 제가 운영하는 네이버 카페 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

오류가 발생하는 이유

Node.js에서 MySQL 패키지를 설치하는 한국어 가이드 문서를 보면 흔히 구버전 MySQL을 설명하는 가이드가 많다. MySQL이 과거에는 'mysql_native_password' 인증 프로토콜을 쓰다가 현재는 'caching_sha2_password'을 사용하고 있는데 이로인해서 MySQL 8.0에 구버전 MySQL 패키지를 사용해서 연결하는 경우 아래와 같은 경고가 뜨며 연결이 되지 않는 것을 볼 수 있다.

Client does not support authentication protocol requested by server; consider upgrading MySQL client

MySQL 8.0 경고 화면

해결 방법

이 문제를 해결하는 방법은 2가지가 있다. 첫 번째 해결 방법은 인증방식을 구버전을 사용하도록 수정하는 것인데 나는 호환성 문제가 발생하거나 예상되는 환경이 아니라면 이 방법을 추천하지 않는다. 두 번째 방법은 본 글에서 설명하 'mysql2' 패키지를 설치하여 MySQL 8.0에 연결하는 방법이다. 아래와 같이 NPM(Node Package Manager)을 활용하여 'mysql2' 패키지를 설치할 수 있다.

npm install mysql2

mysql2 패키지 설치 화면

MySQL 연결 설정은 아래와 같이 할 수 있다.

const mysql = require('mysql2/promise');

const pool = mysql.createPool({
  host: '127.0.0.1',
  port: 3306,
  user: 'root',
  password: 'password',
  database: 'database',
  connectTimeout: 3000,
  connectionLimit: 10
})

module.exports = pool

 

참고문서

[1] "MySQL 8.0 - Client does not support authentication protocol requested by server; consider upgrading MySQL client", 스택오버플로우, 2018년 4월 30일. @원문보기

 

728x90
반응형

댓글