我正在连接MySQL - 8.0与MySQL工作台和得到以下错误:

无法加载认证插件“caching_sha2_password”: dlopen (/ usr /地方/ mysql / lib /插件/ caching_sha2_password。所以,2):图像 没有找到

我也尝试过其他客户端工具。

有什么解决办法吗?


当前回答

好吧,在这上面浪费了很多时间,所以这里是截至2019年3月19日的总结

如果你特别想在MySql 8+中使用Docker镜像,然后使用SequelPro来访问运行在Docker容器上的数据库,那你就不走运了。

请参阅第2699期续作

我的设置是sequelpro 1.1.2,使用docker desktop 2.0.3.0 (mac - mojave),并尝试使用mysql:latest (v8.0.15)。

正如其他人所报道的,使用mysql 5.7不需要任何东西:

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7

当然,也可以在docker上使用MySql 8+,在这种情况下(如果需要的话),这里提供的其他解决caching_sha2_password类型问题的答案是有效的。但是sequelpro在MySql 8+中是行不通的

最后,我放弃了sequelpro(一个值得信赖的朋友,从2013年到2014年),而是安装了DBeaver。一切都在框框之外。对于docker,我使用:

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --default-authentication-plugin=mysql_native_password

你可以快速查看mysql数据库使用:

docker exec -it mysql1 bash

mysql -u root -p

show databases;

其他回答

如果你试图从基于文本的MySQL客户端从另一台计算机(无论是Docker还是其他计算机)连接到MySQL服务器

这里的大多数答案涉及从桌面客户端连接,或者要求您切换到较旧的身份验证方法。如果你将它连接到MySQL客户端(基于文本),我让它在Docker容器中使用Debian Buster。

假设你有apt系统,并且已经设置好了,请执行以下操作:

Sudo apt-get update Sudo apt-get install lsb-release -y 从MySQL网站上下载一个Debian软件包来更新apt源代码。 Sudo DPKG -i mysql-apt-config_0.8.13-1_all.deb然后选择你想要的选项。在我的情况下,我只需要MySQL工具和连接器启用。 Sudo apt-get update 安装mysql-client -y 完成了。现在可以运行新的MySQL客户端并连接到新的身份验证方法。

虽然这不是实数 解决方案,如果你被卡住了,它在本地是有效的

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

当所使用的工具与MySQL8不兼容时出现此错误,请尝试更新到MySQL Workbench的最新版本

我得到了错误error 2059 (HY000):身份验证插件“caching_sha2_password”无法加载:/usr/lib64/mysql/plugin/caching_sha2_password。so:不能打开共享对象文件:没有这样的文件或目录。原来是我自己的错;我把用户名打错了。一旦我纠正了错字,我就可以很好地连接了。

对我来说,这种情况开始发生是因为在一个项目中,我正在使用Docker映像mysql:latest(这是版本5,并且工作良好),在后来的构建中,最新版本切换到版本8,并停止工作。我把我的映像改为mysql:5,我不再得到这个错误。