我正在连接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):图像 没有找到
我也尝试过其他客户端工具。
有什么解决办法吗?
当前回答
对我来说,这种情况开始发生是因为在一个项目中,我正在使用Docker映像mysql:latest(这是版本5,并且工作良好),在后来的构建中,最新版本切换到版本8,并停止工作。我把我的映像改为mysql:5,我不再得到这个错误。
其他回答
Windows 10:
打开命令提示符:
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
C:\Program Files\MySQL\MySQL Server 8.0\bin> mysql -u root -p
Enter password: *********
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newrootpassword';
Query OK, 0 rows affected (0.10 sec)
mysql> exit
或者,您可以更改my.ini配置如下:
[mysqld]
default_authentication_plugin=mysql_native_password
重新启动MySQL服务器并再次打开Workbench。
目前(2018/04/23),您需要下载开发版本。GA的不工作。
我无法连接到最新的GA版本(6.3.10)。
它适用于mysql-workbench-community-8.0.11-rc-winx64。msi(来自https://dev.mysql.com/downloads/workbench/,选项卡Development Releases)。
好吧,在这上面浪费了很多时间,所以这里是截至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;
这是我在docker-compose中的数据库定义:
dataBase:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
networks:
z-net:
ipv4_address: 172.26.0.2
restart: always
entrypoint: ['docker-entrypoint.sh', '--default-authentication-plugin=mysql_native_password']
environment:
MYSQL_ROOT_PASSWORD: supersecret
MYSQL_DATABASE: zdb
MYSQL_USER: zuser
MYSQL_PASSWORD: zpass
ports:
- "3333:3306"
相关的行是入口点。
在构建和建立它之后,你可以用以下方法测试它:
$ mysql -u zuser -pzpass --host=172.26.0.2 zdb -e "select 1;"
Warning: Using a password on the command line interface can be insecure.
+---+
| 1 |
+---+
| 1 |
+---+
对于Windows 10,
修改C:\ProgramData\MySQL\MySQL Server 8.0目录下my.ini文件 (mysqld) default_authentication_plugin = mysql_native_password 重新启动MySQL服务。 通过命令行登录MySQL,在MySQL中执行如下命令: 创建新用户。 创建用户“USER”@“localhost” 授予所有特权。 授予'user'@'localhost'上的所有权限; 打开MySQL工作台,并使用新的用户凭证打开一个新连接。
我也面临着同样的问题,这个方法奏效了。