美文网首页
解决登录mysql时报错: Authentication plu

解决登录mysql时报错: Authentication plu

作者: 硅谷干货 | 来源:发表于2023-09-22 23:23 被阅读0次

    背景

    用docker构建mysql容器后连接遇到以下问题

    问题

    Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found
    
    mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
    
    mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
    

    解决方法一(docker):

    适用场景

    1. 第一次构建容器/安装
    2. 已安装完成后新增用户

    配置

    配置 mysql.cnf 配置默认身份验证插件

    [mysqld]
    default_authentication_plugin = mysql_native_password
    

    验证是否生效

    使用CLI进入MySQL

    $ mysql -u root -p
    
    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> SELECT Host, User, plugin from user;
    +-----------+------------------+-----------------------+
    | Host      | User             | plugin                |
    +-----------+------------------+-----------------------+
    | %         | root             | mysql_native_password |
    | localhost | mysql.infoschema | caching_sha2_password |
    | localhost | mysql.session    | caching_sha2_password |
    | localhost | mysql.sys        | caching_sha2_password |
    | localhost | root             | mysql_native_password |
    +-----------+------------------+-----------------------+
    5 rows in set (0.00 sec)
    

    root用户的身份验证器插件已经变为:mysql_native_password

    解决方法二:

    适用场景

    1. MySQL 已成功安装完成后

    查看身份验证类型

    mysql> use mysql;
    Database changed
    
    mysql> SELECT Host, User, plugin from user;
    +-----------+------------------+-----------------------+
    | Host      | User             | plugin                |
    +-----------+------------------+-----------------------+
    | %         | root             | caching_sha2_password |
    | localhost | mysql.infoschema | caching_sha2_password |
    | localhost | mysql.session    | caching_sha2_password |
    | localhost | mysql.sys        | caching_sha2_password |
    | localhost | root             | caching_sha2_password |
    +-----------+------------------+-----------------------+
    5 rows in set (0.00 sec)
    

    root 用户的验证器插件为 caching_sha2_password

    修改身份验证类型(修改密码)

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

    使生效

    mysql> FLUSH PRIVILEGES;
    

    验证是否生效

    mysql> SELECT Host, User, plugin from user;
    +-----------+------------------+-----------------------+
    | Host      | User             | plugin                |
    +-----------+------------------+-----------------------+
    | %         | root             | mysql_native_password |
    | localhost | mysql.infoschema | caching_sha2_password |
    | localhost | mysql.session    | caching_sha2_password |
    | localhost | mysql.sys        | caching_sha2_password |
    | localhost | root             | mysql_native_password |
    +-----------+------------------+-----------------------+
    5 rows in set (0.00 sec)
    

    相关文章

      网友评论

          本文标题:解决登录mysql时报错: Authentication plu

          本文链接:https://www.haomeiwen.com/subject/rnfxbdtx.html