我是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中发布一个问题,抱歉我的演示文稿错误和语法。
答案 0 :(得分:12)
所以我找到了该错误消息的原因(至少在我的情况下)。
这是因为MySQL版本8.04及更高版本使用caching_sha2_password
作为默认身份验证插件,之前已使用mysql_native_password
。
这显然会导致与期望mysql_native_password
身份验证的旧服务的兼容性问题。
解决方案:
检查您的客户服务的更新版本 使用(例如最近的工作台)。
将MySQL服务器降级到低于该更改的版本。
现在关于选项3,这就像改变用户一样简单:
ALTER USER user
IDENTIFIED WITH mysql_native_password
BY 'pw';
或创建用户时:
CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
答案 1 :(得分:4)
更多详细信息在这里:
该caching_sha2_password
插件是MySQL 8服务器上新的默认身份验证插件。只有该MySQL 8发行版中的libmysql库才拥有此插件,并且它是静态构建的内置于libmysql-用于各种客户端的C连接器。 caching_sha2_password
是not 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 服务器