我正在连接MySQL - 8.0与MySQL工作台和得到以下错误:
无法加载认证插件“caching_sha2_password”: dlopen (/ usr /地方/ mysql / lib /插件/ caching_sha2_password。所以,2):图像 没有找到
我也尝试过其他客户端工具。
有什么解决办法吗?
我正在连接MySQL - 8.0与MySQL工作台和得到以下错误:
无法加载认证插件“caching_sha2_password”: dlopen (/ usr /地方/ mysql / lib /插件/ caching_sha2_password。所以,2):图像 没有找到
我也尝试过其他客户端工具。
有什么解决办法吗?
当前回答
如果你像我一样在GitLab上得到这个错误: 只要从最新版本更改到5.7版本即可;)
# .gitlab-ci.yml
rspec:
services:
# - mysql:latest (I'm using latest version and it causes error)
- mysql:5.7 #(then I've changed to this specific version and fix!)
其他回答
在Debian 11中,我有mariadb-client-10.3 MySQL客户端,我有以下错误:
错误1045 (28000):Plugin caching_sha2_password cannot be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/ Plugin /caching_sha2_password. txtso:不能打开共享对象文件:没有这样的文件或目录
我通过升级系统解决了这个问题。
尝试在下载和安装MySql时使用传统密码,这对我有帮助。 或者遵循Santhosh Shivan为Mac OS发布的方法。
虽然这不是实数 解决方案,如果你被卡住了,它在本地是有效的
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
你可以用下面的Alter命令改变用户密码的加密:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY “密码”;
OR
我们可以通过使用old password插件来避免这个错误:
首先修改my.cnf文件中的认证插件,用于Linux / Windows中的my.ini文件:
(mysqld) default_authentication_plugin = mysql_native_password
重新启动mysql服务器以使更改生效,并尝试通过mysql连接任何mysql客户端。
如果仍然无法连接并得到以下错误:
Unable to load plugin 'caching_sha2_password'
这意味着你的用户需要上面的插件。所以尝试在修改默认插件后用create user或grant命令创建新用户。然后新用户需要本地插件,你将能够连接MySQL。
谢谢
好吧,在这上面浪费了很多时间,所以这里是截至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;