728x90
반응형
default_authentication_plugin 한 줄 정의
default_authentication_plugin은 MySQL에서 “새로 생성되는 사용자 계정”에 기본으로 적용될 인증 방식(플러그인)을 지정하는 설정이야.
즉, CREATE USER 할 때 별도 지정이 없으면 이 값이 계정 인증 방식의 기본값이 된다.
왜 이 설정이 중요한가?
운영에서 가장 많이 터지는 케이스가 이거야.
- MySQL 8.x 도입 후 신규 계정 생성
- 앱/툴(클라이언트)이 최신 인증 방식 지원을 못 함
- 결과: DB 접속 실패
특히 레거시 JDBC, 오래된 Python 드라이버, 일부 배포/운영 툴에서 바로 이슈로 이어져.
어떤 값들이 들어가나? (자주 쓰는 2가지)
아래 두 개가 실무에서 대부분을 차지해.
값특징장점단점/주의
| mysql_native_password | 구(舊) 방식 | 호환성 매우 좋음 | 보안 측면에서 최신 방식보다 약함 |
| caching_sha2_password | MySQL 8 기본(최신) | 보안 강화(SHA-256 기반) | 오래된 클라이언트에서 접속 실패 가능 |
접속 오류가 나는 대표 증상
보통 아래처럼 떨어져.
상황에러/현상원인
| MySQL 8로 올린 뒤 접속 실패 | Authentication plugin 'caching_sha2_password' is not supported | 클라이언트가 caching_sha2_password 미지원 |
| 같은 서버인데 신규 계정만 접속 실패 | 특정 계정만 로그인 불가 | 신규 계정이 기본 플러그인으로 생성됨 |
| 배치/운영툴만 실패 | 애플리케이션/툴별로 접속 편차 | 드라이버 버전 차이 |
현재 설정 확인 방법
1) 서버 기본값 확인
SHOW VARIABLES LIKE 'default_authentication_plugin';
2) 계정별 실제 인증 플러그인 확인
SELECT user, host, plugin
FROM mysql.user;
해결 방법 3가지 (실무에서 바로 쓰는 순서)
✅ 1) 클라이언트/드라이버 업그레이드 (권장)
가능하면 이게 제일 깔끔해.
- 최신 MySQL Connector/J
- 최신 Python mysqlclient / pymysql 등
- 최신 운영툴(배포툴, 마이그레이션 툴)
✅ 2) 특정 계정만 인증 플러그인 변경 (가장 많이 씀)
접속 문제가 생긴 그 계정만 mysql_native_password로 바꾸는 방식.
ALTER USER 'user'@'%'
IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
장점: 영향 범위가 작고 빠름
단점: 계정 수가 많으면 관리 부담
✅ 3) 서버 기본값 자체를 변경 (신규 계정 전체 정책 변경)
“앞으로 생성될 계정은 전부 native로 가자” 같은 정책일 때.
- my.cnf / my.ini에 설정:
[mysqld]
default_authentication_plugin=mysql_native_password
주의: 기존 계정의 plugin이 자동으로 바뀌는 건 아님
“앞으로 만드는 계정”에만 기본 적용돼.
운영 체크리스트: 이 이슈를 사전에 막는 방법
체크 항목추천
| MySQL 버전 확인 | 8.x면 인증 플러그인 이슈 가능성 ↑ |
| 신규 계정 생성 표준화 | CREATE USER ... IDENTIFIED WITH ...로 명시 |
| 드라이버 버전 관리 | 배포 전 “접속 테스트” 자동화 |
| 계정 plugin 점검 쿼리 | mysql.user plugin 컬럼 주기적 확인 |
결론: default_authentication_plugin은 “신규 계정의 기본 로그인 규칙”이다
정리하면 딱 이거야.
- default_authentication_plugin은 신규 계정 생성 시 기본 인증 방식
- MySQL 8에서 caching_sha2_password가 기본이라 접속 이슈가 잦음
- 해결은 보통
- 드라이버 업그레이드
- 계정만 native로 변경
- 서버 기본값 변경
순으로 접근하면 빠르게 정리돼
728x90
반응형