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
반응형