it-swarm.cn

无法加载身份验证插件“caching_sha2_password”

我将MySQL-8.0与MySQL Workbench连接并得到以下错误:

无法加载身份验证插件'caching_sha2_password':dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so,2):找不到图像

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

对此有何解决方案?

286
Aman Aggarwal

您可以通过使用以下Alter命令更改用户来更改用户密码的加密:

ALTER USER'username'@'ip_address'ENFENTIFIED WITH mysql_native_password BY'password';

要么

我们可以通过使用旧密码插件来避免此错误:

首先更改 my.cnf文件中的认证插件,用于Windows中的Linux/my.ini文件

的[mysqld]

default_authentication_plugin = mysql_native_password

重新启动mysql服务器以获取有效的更改,并尝试通过MySQL与任何mysql客户端连接。

如果仍然无法连接并收到以下错误:

Unable to load plugin 'caching_sha2_password'

这意味着您的用户需要上述插件。因此,在更改默认插件后,尝试使用create user或grant命令创建新用户。然后新用户需要本机插件,你就可以连接MySQL了。

谢谢

76
Aman Aggarwal

注意:对于MAC OS

  1. 从系统首选项>初始化数据库>打开MySQL
  2. 输入新密码。
  3. 选择“使用旧密码”
  4. 再次启动服务器。
  5. 现在连接MySQL Workbench

Image description

196
Santhosh Sivan

你可以改变这样的密码加密。

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
116
twocold

目前(2018/04/23),您需要下载开发版GA不起作用。

我无法连接最新的GA版本(6.3.10)。

它适用于mysql-workbench-community-8.0.11-rc-winx64.msi(来自 https://dev.mysql.com/downloads/workbench/ ,tab 开发版本 )。

68
Montecarlo

对于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。

67
Araz Ghazaryan

我遇到了同样的问题,但Aman Aggarwal的答案对我来说并不适用于运行mysql 8.X的Docker容器。我把它塞进了容器里

docker exec -it CONTAINER_ID bash

然后以root身份登录mysql

mysql --user=root --password

输入root的密码(默认为'root')最后运行:

ALTER USER 'username' IDENTIFIED WITH mysql_native_password BY 'password';

你们都准备好了。

41
axelferreira

我使用“ MySQL Web Installer ”在我的Windows 10 PC上安装MySQL,并且在尝试使用MySQL工作台进行连接时遇到了同样的问题。我通过从安装程序窗口重新配置服务器来修复此问题。

MySQL Web Installer - Home Screen

单击“重新配置”选项,将允许重新配置服务器。单击“下一步”,直到出现“身份验证方法”。

MySQL Installer - Authentication Method

在此选项卡上,使用第二个选项“使用传统身份验证方法(保留MySQL 5.x兼容性)”。

保持原样,这就是我解决问题的方法。

38
ImtiazeA

像这样?

docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql --default-authentication-plugin=mysql_native_password
mysql -uroot --protocol tcp

尝试PWD

https://github.com/GitHub30/docs/blob/change-default_authentication_plugin/mysql/stack.yml

或者你应该使用MySQL Workbench 8.0.11。

29
井上智文

- 打开MySQL命令行客户端

- 使用新通行证创建新用户

考虑到顶部bin文件夹路径的示例,这是您需要在命令Prompt中逐行运行的代码:

cd C:\Program Files\MySQL\MySQL Server 5.7\bin
MySQL -u root -p    
current password...***  
CREATE USER 'nativeuser'@'localhost'  
IDENTIFIED WITH mysql_native_password BY 'new_password';

- 然后,您可以再次访问Workbench(您应该能够在创建新的localhost连接并使用新凭据开始使用该程序后执行此操作)。

使用上面提到的用户名(本机用户)设置新的本地主机连接,使用密码登录(new_password)

Image

礼貌:由Career365团队回答的UDEMY常见问题解答

16
Ahmed Ziyad

好的,浪费了很多时间,所以这里的摘要是 2019年3月19日

如果您专门尝试使用 MySql 8+ 的Docker镜像,然后使用 SequelPro 来访问在该docker容器上运行的数据库,那你就不走运了。

参见 sequelpro issue 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 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;
16
arcseldon

对于那些使用Docker或Docker Compose的人,我遇到了这个错误,因为我没有设置我的MySQL镜像版本。 Docker会自动尝试获取最新版本8。

我将MySQL设置为5.7并重建了图像,它正常工作:

version: '2'
services: 
  db:
   image: mysql:5.7
12
Dylan Pierce

这是我在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"

相关的行有 entrypoint

构建完成后,您可以使用以下命令进行测试:

$ 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 |
+---+
11
Maximiliano de Mattos

对于Windows 10

  1. 在** C:\ ProgramData\MySQL\MySQL Server 8.0中修改 my.ini 文件**

[mysqld] default_authentication_plugin = mysql_native_password

  1. 重启MySQL服务

  2. 在命令行中登录MySQL,在MySQL中执行以下命令

  3. 创建一个新用户

创建用户'用户'@'localhost'IDENTIFIED BY'密码';

  1. 授予所有特权

授予所有特权*。*给'用户'@'localhost';

  1. 打开MySQL工作台,使用新的用户凭据打开新连接

我遇到了同样的问题,这很有效。

10
Preetham

这是在Windows 10上安装MySQL 8.0之后适合我的解决方案。

假设MySQL用户名为root且密码为admin

打开命令提示并输入以下命令:

cd C:\ Program Files\MySQL\MySQL Server 8.0\bin

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

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

7
Pratik Patil

如果你像我一样在GitLab CI上收到此错误:只需从最新版本更改为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!)
6
Bruno Casali

几乎像上面的答案,但可能在简单的查询中,我在我的spring启动应用程序中得到此错误以及MySQL升级后的hibernate。我们通过针对我们的数据库运行以下查询来创建新用户。我相信这是一个临时的工作,使用sha256_password而不是最新和良好的身份验证caching_sha2_password。

CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pa$$Word';

GRANT ALL PRIVILEGES ON * .* TO 'username'@'localhost';
5
Vikky

对我来说,这开始发生,因为在一个项目中,我使用的是Docker图像mysql:latest(版本5,工作正常),在以后的版本中,最新版本切换到版本8, 并停止工作 。我 将我的图像更改为mysql:5 我是 不再收到此错误

5
alberto56

用于mac的MySQL Workbench 8.0.11解决了这个问题。我可以在docker中运行与root密码保护的mysql实例建立连接。

4
Benjamin Lin

打开我的sql命令promt:

step 1

然后输入mysql密码

step 2

最后使用:

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

参考: https://stackoverflow.com/a/49228443/6097074

谢谢。

3
ankit

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

1
Shammoo

以下解决方案适用于我 enter image description here

转到Mysql Workbench - > Server-> Users and Privileges 1.单击Add Account

2.在Login选项卡下提供新的详细信息,并确保选择Authentication Type为 standard 并选择相应的管理角色和Schema Privileges

enter image description here

1
Deepak rkm

下载8.0.11-rc的开发版本在mac上为我工作。使用以下docker命令:

docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql
0
Daniel Adigun