“身份验证插件'caching_sha2_password'

时间:2018-04-22 07:00:14

标签: mysql

我是MySql环境的新手,并已安装: MySQL使用以下命令:

sudo apt-get update sudo apt-get install mysql-server mysql_secure_installation

并且还安装了mysql workbench。

但是当我尝试连接我的localhost时出现以下错误:

“身份验证插件'caching_sha2_password'无法加载:/usr/lib/mysql/plugin/caching_sha2_password.so:无法打开共享对象文件:没有这样的文件或目录”

Error Screenshot

甚至这是我第一次在stackoverflow中发布一个问题,抱歉我的演示文稿错误和语法。

4 个答案:

答案 0 :(得分:12)

所以我找到了该错误消息的原因(至少在我的情况下)。 这是因为MySQL版本8.04及更高版本使用caching_sha2_password作为默认身份验证插件,之前已使用mysql_native_password

这显然会导致与期望mysql_native_password身份验证的旧服务的兼容性问题。

解决方案:

  1. 检查您的客户服务的更新版本 使用(例如最近的工作台)。

  2. 将MySQL服务器降级到低于该更改的版本。

  3. 基于每个用户更改身份验证插件(我没有找到全局选项,但可能存在一个)。
  4. 现在关于选项3,这就像改变用户一样简单:

    ALTER USER user
    IDENTIFIED WITH mysql_native_password
    BY 'pw';
    

    或创建用户时:

    CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    

    See MySQL Server Blog

    See Oracle

答案 1 :(得分:4)

更多详细信息在这里: 该caching_sha2_password插件是MySQL 8服务器上新的默认身份验证插件。只有该MySQL 8发行版中的libmysql库才拥有此插件,并且它是静态构建的内置于libmysql-用于各种客户端的C连接器。 caching_sha2_passwordnot available separately for downloading

这是libmysql首次静态包含一个重要的插件。这会导致其他任何libmysql(包括libmariadb以及较旧的libmysql)都无法通过定义为使用caching_sha2_password身份验证的用户连接到MySQL 8。

我只是希望来自MariaDB的人非常高兴,可以在他们的libmariadb中也加入caching_sha2_password,以恢复MySQL和MariaDB之间的兼容性。

来自MySQL的server blog

  

在MySQL 8.0.3中添加了对caching_sha2_password的支持。较旧   libmysqlclient版本不支持该插件。所以,尽管   使用libmysqlclient的客户端工具早于可用的一种   MySQL 8.0.3可以使用以下用户连接到MySQL 8.0.4服务器   其他身份验证插件,例如mysql_native_password或   sha256_password,此类客户端无法连接到MySQL 8.0.4服务器   使用需要caching_sha2_password支持的用户。   升级的数据库,这意味着使用现有的用户帐户进行连接   应该不会遇到任何问题。

答案 2 :(得分:1)

在my.cnf文件中添加以下行:

default-authentication-plugin=mysql_native_password

然后重新启动服务器。

答案 3 :(得分:0)

最新的 MYSQL 版本将 'caching_sha2_password' 作为默认身份验证类型。这不允许远程连接到 MYSQL 并导致 caching_sha2_password 插件错误。 我已经使用

修复了它 <块引用>

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';

现在它允许您的用户从本地主机访问 MySQL。

如果您想从多个远程主机访问 MySQL,请执行以下操作, **

<块引用>

ALTER USER 'yourusername'@'%' IDENTIFIED WITH mysql_native_password BY '你密码';

** 在 SQL 中的每个 alter 命令之后运行以下命令以使其生效。

<块引用>

同花顺特权;

或重启 MySQL 服务器