개발 기록/트러블슈팅 · 환경 설정

MySQL 사용자 인증 오류 1251 해결 방법 (Node.js 연동 시)

JeongPark 2023. 4. 19. 17:25
728x90

MySQL 1251 오류 해결기 - ER_NOT_SUPPORTED_AUTH_MODE

상황

로컬에서 정상 동작하던 Node.js + MySQL 코드를 AWS EC2로 옮긴 뒤,
다음과 같은 오류가 발생하였습니다:

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

코드 예시

app.use(express.json());
const connection = mysql.createConnection({ dbconfig });

connection.query('SELECT * from User', (error, rows, fields) => {
    if (error) throw error;
    console.log('User info is: ', rows);
});

app.listen(PORT, () => {
    console.log(`The Server is Listening at ${PORT}`);
});

원인

  1. 외부 접속을 허용하지 않은 사용자로 접속을 시도
  2. MySQL 8.0부터 기본 인증 플러그인이 caching_sha2_password로 바뀌었는데,
    기존 mysql 라이브러리에서는 이를 지원하지 않음

해결 방법

1. 외부 접속 허용 확인 및 설정

-- 외부 접속 가능 여부 확인
SELECT host, user FROM mysql.user;

-- 외부 접속 허용 (host = '%')
CREATE USER 'your_id'@'%' IDENTIFIED BY 'your_password';

-- 모든 DB 및 테이블에 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'your_id'@'%' WITH GRANT OPTION;

-- 권한 적용
FLUSH PRIVILEGES;

-- 재확인
SELECT host, user FROM mysql.user;

2. 인증 플러그인 변경 (MySQL 8.x 이상 환경)

-- 현재 사용자 플러그인 확인
SELECT host, user, plugin, authentication_string FROM mysql.user;

-- 인증 플러그인을 mysql_native_password로 변경
ALTER USER 'your_id'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';

요약

항목 설명
에러 코드 1251
에러 메시지 ER_NOT_SUPPORTED_AUTH_MODE
원인 외부 접속 미허용 + 인증 플러그인 호환 문제
해결 방법 GRANT + ALTER USER로 권한 및 플러그인 설정 변경

참고 블로그

반응형