본문 바로가기
에러/Node.js

Node.js DB연동 오류"Mysql getConnection error. abortedError: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client"

by P_eli 2023. 12. 16.
728x90
반응형

Node.js 실습 중  DB 연결 하려하는데 아래와 같은 에러가 발생하였습니다.

 

const express = require('express');
const mysql = require('mysql');
const path = require('path');
const static = require('serve-static');
const dbconfig = require('./config/dbconfig.json');

const pool = mysql.createPool({
    connectionLimit: 10,
    host: dbconfig.host,
    user: dbconfig.user,
    password: dbconfig.password,
    database: dbconfig.database,
    debug: false
});

 

dbconfig.json

{
    "host": "localhost", // DB 주소
    "user": "user", // DB 아이디
    "password": "password", // DB 패스워드
    "database": "database" // DB Schema 이름
}

 

 

에러내용 

 

 

 

 

Mysql getConnection error. abortedError: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

 

해결 방법

1. MySQL 클라이언트 라이브러리 업그레이드:

 

최신 버전의 MySQL 클라이언트 라이브러리를 사용하도록 업그레이드하세요. 이를 위해 Node.js 프로젝트의 package.json 파일을

열고, mysql 또는 mysql2 패키지의 버전을 최신 버전으로 업데이트하세요. 그리고 나서 npm install 명령을 실행하여 의존성을 업데이트하세요.

// package.json
"dependencies": {
  "mysql": "^2.18.1" // 또는 "mysql2": "^2.2.5"
}

 

2. MySQL 사용자의 인증 방법 변경:

 

MySQL 서버에서 사용 중인 사용자의 인증 방법을 변경하여 이전 버전의 MySQL 클라이언트도 지원할 수 있도록 설정할 수 있습니다. 다음 SQL 쿼리를 사용하여 사용자의 인증 방법을 변경하세요.

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

 

728x90
반응형