[MySQL] 8.0이상 버전에서 User 생성 시 password 인코딩 Error

김우진·2022년 9월 14일
1

DB, MySQL, SQL

목록 보기
3/5

8.0버전 이상 패스워드 인코딩 에러

MySQL8.0으로 User를 생성하려고하니 아래와 같은 오류가 발생하여 조사해보았습니다.

java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

발생원인

MySQL8.0에서는 비밀번호 해시 알고리즘인 SHA-256을 구현하는 두가지 인증 플러그인을 지원합니다.

  1. sha256_password : 기본적인 SHA-256 인증을 구현한 플러그인
  2. caching_sha2_password : sha256_password 방식에서 성능 향샹을 위해 서버 캐싱을 이용

MySQL8.0부터는 기본 인증 플럭인이 mysql_native_password에서 caching_sha2_password로 바뀌었는데 이로인해서 발생한 문제라고 합니다.

해결

MySQL chaching_sha2_password 플러그인을 사용하려면

  1. SSL 보안연결
  2. RSA 보안을 적용한 비암호 연결

둘 중 하나를 사용해야하는데 이 두 방식 모두 어려움으로 대부분의 게시글이 이전 방식인 mysql_native_passowrd plugin 사용 방법으로 서술하였습니다.

DDL로 mysql_native_password 방식 사용

아래의 DDL방식을 사용해 구식 방식으로 변경하여 진행하면 User를 생성할 수 있습니다.

alter user "사용자이름"@'localhost' identified with mysql_native_password by '암호'

SSL과 RSA를 사용하지 않는 방법

database 설정에서 SSL과 RSA를 둘다 사용하지 않도록 설정해줍니다. 하지만, 이 경우는 보안에 취약할 수 밖에 없어 추천하지 않는습니다.

my.ini파일에서 plugin 설정을 mysql_native_password 방식으로 변경하기

[mysqld]

default_authentication_plugin=mysql_native_password

이 경우 MySQL을 재가동해야 적용됩니다.

출처

0개의 댓글