"身份验证插件'caching_sha2_password'

nan*_*msi 21 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:无法打开共享对象文件:没有这样的文件或目录"

错误截图

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

meo*_*eow 18

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

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

解决方案:

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

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

  3. 基于每个用户更改身份验证插件(我没有找到全局选项,但可能存在一个).

现在关于选项3,这就像改变用户一样简单:

ALTER USER user
IDENTIFIED WITH mysql_native_password
BY 'pw';
Run Code Online (Sandbox Code Playgroud)

或者在创建用户时:

CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Run Code Online (Sandbox Code Playgroud)

请参阅MySQL服务器博客

见Oracle


Ans*_*nse 8

这里有更多详细信息:该caching_sha2_password插件是 MySQL 8 服务器上新的默认身份验证插件。只有来自 MySQL 8 发行版的 libmysql 库拥有这个插件,并且它被静态构建到 libmysql - 各种客户端的 C 连接器中。这caching_sha2_password不可分开的下载

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

我只希望 MariaDB 的人caching_sha2_password能把它也包含在他们的 libmariadb 中,以恢复 MySQL 和 MariaDB 之间的直接兼容性。

来自 MySQL 的服务器博客

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


小智 7

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

default-authentication-plugin=mysql_native_password
Run Code Online (Sandbox Code Playgroud)

然后重启服务器。

  • 恕我直言,sha2 缓存密码插件在整个 MySQL/MariaDB/PHP/etc 领域的过渡已经得到了很好的实现。这是令人困惑和令人沮丧的。你的回答是非正统的,但让我恢复并快速运行。 (2认同)