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

Authentication plugin 'caching_sha2_password' cannot be loaded

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

Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found

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

有什么解决办法吗?

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

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

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

首先将my.cnf文件中的身份验证插件更改为Linux/my.ini文件中的Windows:

[mysqld]

default_authentication_plugin=mysql_native_password

重新启动 mysql 服务器以使更改生效并尝试通过 MySQL 与任何 mysql 客户端连接。

如果仍然无法连接并出现以下错误:

Unable to load plugin 'caching_sha2_password'

说明您的用户需要上述插件。因此,尝试在更改默认插件后使用 create user 或 grant 命令创建新用户。然后新用户需要本机插件,您将能够连接 MySQL.

谢谢

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

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

像这样?

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.

注:对于MACOS

  1. 从系统偏好设置>初始化数据库>
  2. 打开MySQL
  3. 输入您的新密码。
  4. 选择'Use legacy password'
  5. 再次启动服务器。
  6. 现在连接 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/,选项卡 开发版本 )。

对于Windows10,

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

    [mysqld]
    default_authentication_plugin=mysql_native_password
    
  2. 重新启动 MySQL 服务。

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

    • 创建一个新用户。

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
      
    • 授予所有权限。

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
      
  4. 打开 MySQL workbench,然后使用新用户凭据打开一个新连接。

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

如果你像我一样在 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!)
  • 打开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(您应该可以在创建新的本地主机连接并使用新凭据开始使用该程序后执行此操作)。

使用上述用户名(本机用户)建立新的本地主机连接,使用密码登录(new_password)

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

我遇到了同样的问题,但 Aman Aggarwal 的回答对 Docker 容器 运行 mysql 8.X 不适用。 我登录了容器

docker exec -it CONTAINER_ID bash

然后以 root

身份登录 mysql
mysql --user=root --password

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

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

大功告成。

对于Windows10:

打开命令提示符:

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。

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

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

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

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

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

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

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

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

这是在 MySQL 8.0 在 Windows 10 上安装后对我有用的解决方案。

假设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'

我正在使用“MySQL Web Installer”在我的 Windows 10 PC 上安装 MySQL,并且在尝试使用 MySQL [=33= 进行连接时遇到了同样的问题].我通过从安装程序 window.

重新配置服务器解决了这个问题

单击 "Reconfigure" 选项将允许重新配置服务器。单击 "Next" 直到到达 "Authentication Method"。

进入此选项卡后,使用第二个选项 "Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)"。

保持其他一切不变,这就是我解决问题的方法。

打开我的 sql 命令提示符:

然后输入mysql密码

最后使用:

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

参考:

谢谢。

下载 8.0.11-rc 的开发版本对我有用 mac。使用以下 docker 命令:

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

对我来说,这开始发生是因为在一个项目中,我使用了 Docker 图像 mysql:latest(这是版本 5,并且工作正常),并且在后来的构建中,最新的版本已切换到版本 8,and stopped working. I changed my image to mysql:5 and I was no longer getting this error.

以下解决方案对我有用

转到Mysql Workbench -> 服务器 -> 用户和权限 1.Click 添加帐户

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

我通过安装 MySQL 5.7:

解决了这个问题

第 1 步 – 启用 MySQL 存储库

首先,您需要在系统上启用MySQL 5.7 社区版yum 存储库。 MySQL官网提供yum仓库配置的rpm包。根据您的操作系统版本使用以下命令。

在 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/

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

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

如果您专门尝试将 Docker 图像与 MySql 8+ 一起使用,然后使用 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 是 NO GO 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;

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

我发现

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 在 Ubuntu 18.04 运行 PHP 7.0

如果您尝试从另一台计算机(无论是否 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.
  4. 下载一个 Debian 软件包,为您更新 apt 源
  5. sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb和select你想要的选项。在我的例子中,我只需要启用 MySQL Tools & Connectors
  6. sudo apt-get update
  7. sudo apt-get install mysql-client -y
  8. 完成。您现在可以 运行 新的 MySQL 客户端并使用新的身份验证方法连接。

在下载和安装时尝试使用旧密码 MySql,这对我有帮助。 或者按照 Santhosh Shivan 为 Mac OS.

发布的方法

虽然这不应该是真实的 解决方案,如果你被卡住,它确实可以在本地工作

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

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

  1. 密码加密
  2. 传统加密

Read Here

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

注意:对于 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. 完成!

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

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

注意:在 Mac big Sur 上,最新的两个版本:8.0.22 和 8.0.23 存在错误且无法运行。

使用 8.0.21 直到修复这些问题

我运行docker在M1(arm64)中,在dockerbash中直接改的方式对我不起作用。相反,我将 mysql 图像更改为 mysql:8.0.26 平台设置为 linux/x86_64 并将 default_authentication_plugin=mysql_native_password 添加到 my.cnf 然后,你重建你的容器。

如果您仍想使用新的身份验证方法,正确的解决方案是安装 mariadb-connector-c 包。对于高山,运行:

apk add mariadb-connector-c

这会将缺少的 caching_sha2_password.so 库添加到 /usr/lib/mariadb/plugin/caching_sha2_password.so