개발 기록/트러블슈팅 · 환경 설정
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}`);
});
원인
- 외부 접속을 허용하지 않은 사용자로 접속을 시도
- 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로 권한 및 플러그인 설정 변경 |
참고 블로그
반응형