MySQL运维实战(6)用户认证插件caching_sha2_password

云的事随心讲 2024-02-22 05:43:16
作者:俊达 用户认证及连接错误解决MySQL用户认证可以使用几种不同的方式,创建用户时可以制定认证方式: create user 'username'@'%' identified with auth_plugin by 'password'auth_plugin: mysql_native_passwordsha256_passwordcaching_sha2_password 如果创建用户时没有指定auth_plugin,则会根据参数default_authentication_plugin的设置来确定使用哪种认证方式。 mysql> create user 'user1'@'%' identified with 'mysql_native_password' by 'abc123';Query OK, 0 rows affected (0.02 sec)mysql> create user 'user2'@'%' identified with 'sha256_password' by 'abc123';Query OK, 0 rows affected (0.02 sec)mysql> create user 'user3'@'%' identified by 'abc123';Query OK, 0 rows affected (0.02 sec)mysql> select user,host,plugin from mysql.user where user in ('user1','user2','user3');+-------+------+-----------------------+| user | host | plugin |+-------+------+-----------------------+| user1 | % | mysql_native_password || user2 | % | sha256_password || user3 | % | caching_sha2_password |+-------+------+-----------------------+3 rows in set (0.00 sec)MySQL 8.0默认使用caching_sha2_password mysql> show variables like 'default_authentication_plugin';+------------------------------------------+-----------------------+| Variable_name | Value |+------------------------------------------+-----------------------+| default_authentication_plugin | caching_sha2_password |如果使用caching_sha2_password认证方式,mysql会要求连接开启SSL,或者使用RSA对密码进行加密,否则连接可能会报如下的错误: # mysql -u user3 -pabc123 -h127.0.0.1 --ssl-mode=DISABLEDERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.可以使用几个办法解决这个报错1、连接开启TLS mysql -u user3 -pabc123 -h127.0.0.1 --ssl-mode=REQUIRED2、连接时指定RSA public keymysql客户端可以通过命令行参数server-public-key-path指定有效的RSA Public Key路径 mysql -u user3 -pabc123 -h127.0.0.1 --ssl-mode=DISABLED --server-public-key-path=/data/mysql01/data/public_key.pem这里的public key,需要和参数caching_sha2_password_public_key_path指定的key一样。 mysql> show variables like '%public_key_path%';+--------------------------------------------+----------------+| Variable_name | Value |+--------------------------------------------+----------------+| caching_sha2_password_public_key_path | public_key.pem || group_replication_recovery_public_key_path | || sha256_password_public_key_path | public_key.pem |+--------------------------------------------+----------------+3 rows in set (0.00 sec)如果使用了错误的public key,连接会报类似下面这样的错: mysql -u user3 -pabc123 -h172.16.121.237 --ssl-mode=DISABLED --server-public-key-path=/data/mysql01/data/public_key.pemERROR 1045 (28000): Access denied for user 'user3'@'172-16-121-236' (using password: YES)3、从服务端获取public key如果本地没有RSA public key,可以在登录时从服务端下载Public Key。相比方法2,这种方法不需要在客户端本地维护public key文件,使用更加简单。但是在登录阶段,需要从服务端下载public key,会消耗一定的时间。 mysql -uuser3 -pabc123 -h 127.0.0.1 --ssl-mode=DISABLED --get-server-public-key复制账号如果使用了caching_sha2_password认证方式,也有类似的问题和解决方法:开启TLS或者使用RSA Public Key 复制指定RSA public key文件: CHANGE REPLICATION SOURCE TO SOURCE_PUBLIC_KEY_PATH = 'key_file_name'从服务端下载RSA Public Key: CHANGE REPLICATION SOURCE TO GET_SOURCE_PUBLIC_KEY = {0|1}组复制组复制可以设置参数group_replication_recovery_get_public_key或group_replication_recovery_public_key_path mysql> show variables like '%group_replication%key%';+--------------------------------------------+-------+| Variable_name | Value |+--------------------------------------------+-------+| group_replication_recovery_get_public_key | OFF || group_replication_recovery_public_key_path | |客户端版本过低如果客户端版本过低(本例中使用了mysql 5.6.51版本带的mysql客户端) ,可能会报如下错误。解决方法是使用更新版本的客户端。 ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directoryCache登录成功后,服务端会将用户名、密码的hash信息缓存到内存中。下次登录时,如果账号已经被缓存,则不需要再发送密码清理cache的几种情况:1、执行flush privileges,会清空所有账号的缓存。2、修改账号密码时,会清空该账号的缓存。3、重启服务器。 更多技术信息请查看云掣官网云掣YunChe - 可观测运维专家 | 大数据运维托管 | 云MSP服务
0 阅读:0

云的事随心讲

简介:感谢大家的关注