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
옵션을 설정하게 되면 이전 버전과의 호환성을 위한 플러그인 설정이 가능하다고 되어있다.