身份验证插件' caching_sha2_password'无法加载

时间:2018-03-09 13:19:55

标签: mysql database mysql-workbench mysql-8.0

我正在使用MySQL Workbench连接MySQL - 8.0并收到以下错误:

  

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

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

对此有何解决方案?

30 个答案:

答案 0 :(得分:197)

注意:对于MAC OS

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

答案 1 :(得分:119)

您可以像这样更改密码加密。

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

答案 2 :(得分:76)

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

  

ALTER USER'用户名'@'ip_address'用mysql_native_password BY识别   '密码';

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

首先更改 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了。

由于

答案 3 :(得分:70)

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

答案 4 :(得分:68)

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

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

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

答案 5 :(得分:41)

我遇到了同样的问题,但是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';

你已经全部准备好了。

答案 6 :(得分:39)

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

MySQL Web Installer - Home Screen

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

MySQL Installer - Authentication Method

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

保持其他所有内容,这就是我解决问题的方法。

答案 7 :(得分:30)

像这样?

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

Try in PWD

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

或者您应该使用MySQL Workbench 8.0.11。

答案 8 :(得分:18)

好吧,这浪费了很多时间,所以这里是截至 2019年3月19日

的摘要

如果您专门尝试通过 MySql 8 + 使用Docker映像,然后使用 SequelPro 访问在该Docker容器上运行的数据库,则您运气不好。

请参见sequelpro issue 2699

我的设置是使用docker Desktop 2.0.3.0(mac-mojave)的sequelpro 1.1.2,并尝试使用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;

答案 9 :(得分:16)

- 打开MySQL命令行客户端

使用新传递

创建新用户

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

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常见问题解答

答案 10 :(得分:12)

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

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

version: '2'
services: 
  db:
   image: mysql:5.7

答案 11 :(得分:12)

尽管这不应该是 real 解决方案,如果您遇到问题,它确实可以在本地工作

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

答案 12 :(得分:11)

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

答案 13 :(得分:10)

对于Windows 10

  1. 修改** C:\ ProgramData \ MySQL \ MySQL Server 8.0 **中的 my.ini 文件
  2. 的[mysqld] default_authentication_plugin = mysql_native_password

    1. 重启MySQL服务

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

    3. 创建新用户

    4.   

      创建用户'用户'@'localhost'识别'密码';

      1. 授予所有特权
      2.   

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

        1. 打开MySQL工作台,使用新用户凭据打开新连接
        2. 我遇到了同样的问题,这很有用。

答案 14 :(得分:9)

注意:对于Linux(Debian,Ubuntu,Mint)

我收到此错误:

MySQL Error Message: Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

我已完成以下步骤:

  1. 在mysql控制台上输入:$ mysql -u root -p,如果您没有root用户的密码,则:

  2. 使用mysql数据库:mysql> use mysql;

  3. 更改您的用户以解决问题:mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

  4. 退出... mysql> quit;

  5. 完成!

答案 15 :(得分:7)

这是在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'使用mysql_native_password BY识别   '管理'

答案 16 :(得分:6)

如果您在我这样的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!)

答案 17 :(得分:5)

几乎像上面的答案,但可能是简单的查询,我在我的春季启动应用程序中获得此错误以及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';

答案 18 :(得分:5)

对我来说,这开始发生的原因是,在一个项目中,我使用的是Docker映像mysql:latest(版本5,并且运行良好),在以后的构建中,最新版本切换到了版本8,{ {3}}。我and stopped working,我是changed my image to mysql:5

答案 19 :(得分:3)

打开我的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

谢谢。

答案 20 :(得分:1)

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

答案 21 :(得分:1)

我发现

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

本身无法工作。我还需要设置

[mysqld]
    default_authentication_plugin=mysql_native_password
在/etc/mysql/mysql.conf.d/mysqld.cnf中的

在运行PHP 7.0的Ubuntu 18.04上

答案 22 :(得分:1)

以下解决方案对我有用 enter image description here

转到Mysql Workbench->服务器->用户和特权 1.点击添加帐户

2。在“登录”选项卡下,提供了新的详细信息,并确保将“身份验证类型”选择为“ 标准”,并选择相应的管理角色和架构权限

enter image description here

答案 23 :(得分:1)

实际上,MySql在安装时允许两种类型的身份验证。

  1. 密码加密
  2. 旧版加密

enter image description here

Read Here

因此,通过检查旧版身份验证,问题得以解决。

答案 24 :(得分:0)

在下载和安装MySql时尝试使用旧密码,这对我有所帮助。 或遵循Santhosh Shivan针对Mac OS发布的方法。

答案 25 :(得分:0)

在Mac上下载8.0.11-rc的开发版本对我来说很有效。使用以下docker命令:

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

答案 26 :(得分:0)

刚刚下载了兼容最新加密的最新mysqlworkbench:

https://downloads.mysql.com/archives/workbench/

注意:在 Mac big Sur 上,最新的两个版本:8.0.22 和 8.0.23 有问题,无法运行。

使用 8.0.21 直到这些被修复

答案 27 :(得分:-1)

我通过安装MySQL 5.7解决了这个问题:

步骤1 –启用MySQL存储库

首先,您需要在系统上启用MySQL 5.7社区发布的yum存储库。用于yum存储库配置的rpm软件包可在MySQL官方网站上找到。根据您的操作系统版本使用以下命令中的on。

在CentOS和RHEL 7上

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

在CentOS和RHEL 6上

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm

在Fedora 27上

dnf install https://dev.mysql.com/get/mysql57-community-release-fc27-9.noarch.rpm

在Fedora 26上

dnf install https://dev.mysql.com/get/mysql57-community-release-fc26-9.noarch.rpm

在Fedora 25上

dnf install https://dev.mysql.com/get/mysql57-community-release-fc25-9.noarch.rpm

步骤2 –安装MySQL 5.7服务器

在系统上成功启用MySQL yum存储库后。现在,根据您的操作系统版本,使用以下命令安装MySQL 5.7社区服务器。

在CentOS和RHEL 7/6上

yum install mysql-community-server

在Fedora上27/26/25

 dnf install mysql-community-server

来源:https://tecadmin.net/install-mysql-5-7-centos-rhel/

答案 28 :(得分:-1)

如果您尝试从另一台计算机(无论是否为Docker)从基于文本的MySQL客户端连接到MySQL服务器

此处的大多数答案涉及从桌面客户端连接,或要求您切换到较旧的身份验证方法。如果您将其与MySQL客户端(基于文本)连接,则可以使其与Docker容器中的Debian Buster一起使用。

假设您已经安装了apt系统和wget,请执行以下操作:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. MySQL web site下载一个Debian软件包,该软件包会为您更新apt源。
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb并选择所需的选项。就我而言,我只需要启用MySQL Tools & Connectors
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. 完成。现在,您可以运行新的MySQL客户端并使用新的身份验证方法进行连接。

答案 29 :(得分:-3)

回到以前的安装(到MySQL Community Server 5.7和Workbench 6.1)并设置新的MySQL凭据对我有用!