목차

MySQL 8 인증 플러그인 암호화 방식 변경

MySQL 8 버전은 기본 인증 암호화 플러그인이 caching_sha2_password 를 사용하게 되어있습니다.
이것은 향상된 암호화 방식을 지원하지만 기존의 오래된 접속 클라이언트들은 지원하지 않는 경우가 있습니다.

// 에러메세지 종류
this authentication plugin is not supported

Authentication plugin ‘caching_sha2_password’ cannot be loaded:

위와같은 오류가 발생하는 경우가 있습니다.

기본적으로 mysql 8 버전의 경우 아래처럼 사용자 암호에 caching_sha2_password가 설정되어있습니다.

mysql> select host, user, plugin, authentication_string, password_last_changed from user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | plugin                | authentication_string                                                  | password_last_changed |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | 2018-09-11 18:20:19   |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | 2018-09-11 18:20:19   |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | 2018-09-11 18:20:19   |
| localhost | root             | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | 2018-09-11 18:20:19   |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+-----------------------+
4 rows in set (0.00 sec)

이 암호화 방식을 변경하려면 아래와 같이 해당 사용자의 암호화 플러그인을 변경하여 설정하도록 합니다.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MySQL2020!';
Query OK, 0 rows affected (0.00 sec)

mysql> select host, user, plugin, authentication_string, password_last_changed from user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | plugin                | authentication_string                                                  | password_last_changed |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | 2020-02-18 11:10:33   |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | 2020-02-18 11:10:33   |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | 2020-02-18 11:10:33   |
| localhost | root             | mysql_native_password | *B08327C27D3ECC829D550501D6A06E0496A74F5C                              | 2020-02-18 11:21:26   |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+-----------------------+
4 rows in set (0.00 sec)

변경 후에는 해당 계정의 암호화 플러그인과 암호문자열이 변경된것을 확인할 수 있다.

새로운 계정 추가시 자동 적용

위 방법을 적용해도 새로이 계정을 추가하는 경우에는 다시 caching_sha2_password 방식이 기본값으로 사용된다.
이후에도 계속해서 고정적으로 mysql_native_password 방식을 사용하도록 하기 위해서는 아래와 같이 설정하도록 한다.

[mysqld]
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
default-authentication-plugin=mysql_native_password

my.cnf 파일내의 주석에도 나와있듯이 default-authentication-plugin=mysql_native_password 옵션을 설정하게 되면 이전 버전과의 호환성을 위한 플러그인 설정이 가능하다고 되어있다.

참조링크