验证插件'caching_sha2_password'无法加载

我正在连接MySQL - 8.0与MySQL工作台和得到以下错误:

认证插件“caching_sha2_password”无法加载: dlopen (/ usr /地方/ mysql / lib /插件/ caching_sha2_password。所以,2):图像 没有找到< / p >

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

有什么解决办法吗?

924992 次浏览

你可以用下面的Alter命令改变用户密码的加密:

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY “密码”,< / p >

我们可以通过使用old password插件来避免这个错误:

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

(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。

注意:适用于MAC OS

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

图片描述 .

目前(2018/04/23),您需要下载开发版遗传算法不工作。

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

它与mysql-workbench-community-8.0.11-rc-winx64.msi(从https://dev.mysql.com/downloads/workbench/,标签开发版本)一起工作。

# EYZ0,

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

    [mysqld]
    default_authentication_plugin=mysql_native_password
    
  2. Restart the MySQL Service.

  3. Login to MySQL on the command line, and execute the following commands in MySQL:

    • Create a new user.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
      
    • Grant all privileges.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
      
  4. Open MySQL workbench, and open a new connection using the new user credentials.

I was facing the same issue and this worked.

如果你像我一样在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!)
  • 打开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常见问题

我也有同样的问题,但Aman Aggarwal的答案对我来说不适用运行mysql 8.X的Docker容器。 我登录到容器

docker exec -it CONTAINER_ID bash

然后以root用户登录mysql

mysql --user=root --password

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

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

你都准备好了。

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。

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

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

version: '2'
services:
db:
image: mysql:5.7
MySQLWorkbench 8.0.11 for macOS解决了这个问题。 我可以建立连接与根密码保护mysql实例运行在docker。< / p >

这是我在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引导应用程序和hibernate中得到了这个错误。通过对DB运行下面的查询,我们创建了一个新用户。我相信这是一个临时的工作,使用sha256_password而不是最新的和良好的身份验证caching_sha2_password。

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


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

以下是在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”< / p >

我使用“MySQL Web安装程序”在我的Windows 10 PC上安装MySQL,在尝试使用MySQL工作台连接时遇到了同样的问题。我通过在安装程序窗口中重新配置服务器来解决这个问题。

MySQL Web Installer - Home Screen .

点击“重新配置”选项将允许重新配置服务器。点击“下一步”,直到你到达“认证方法”。

MySQL Installer - Authentication Method .

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

保持一切不变,这就是我如何解决我的问题。

打开sql命令提示符:

step 1

然后输入mysql密码

step 2

最后使用:

# EYZ0

参考:# EYZ0

谢谢。

在mac上下载8.0.11-rc的开发版本对我来说是可行的。使用以下docker命令:

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

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

下面的解决方案对我很有效 # EYZ0 < / p >

进入Mysql工作台->服务器->用户和特权 1.单击“Add Account

2.在登录选项卡下提供新的详细信息,并确保选择身份验证类型为标准,并选择各自的管理角色和模式特权

enter image description here

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

步骤1 -启用MySQL存储库

首先,你需要在你的系统上启用MySQL 5.7社区发行版yum存储库。yum repository配置的rpm包可在MySQL官网获取。根据您的操作系统版本使用以下命令中的任意一个。

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 Server

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

CentOS和RHEL 7/6

yum install mysql-community-server

在Fedora 27/26/25

 dnf install mysql-community-server

来源:# EYZ0

回滚到以前的安装(MySQL Community Server 5.7和Workbench 6.1)并设置新的MySQL凭证对我来说很有效!

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

如果你特别想使用MySql 8 +的Docker映像,然后使用SequelPro来访问在Docker容器上运行的数据库,那么你就不走运了。

请看Sequelpro 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;

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

我发现

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

它不能自己起作用。我还需要设置

[mysqld]
default_authentication_plugin=mysql_native_password
< p > /etc/mysql/mysql.conf.d / mysqld.cnf 在Ubuntu 18.04运行PHP 7.0

如果你试图从基于文本的MySQL客户端从另一台计算机(无论是Docker还是其他计算机)连接到MySQL服务器

这里的大多数答案涉及从桌面客户端连接,或者要求您切换到较旧的身份验证方法。如果你将它连接到MySQL客户端(基于文本),我让它在Docker容器中使用Debian Buster。

假设你有apt系统,并且已经设置好了,请执行以下操作:

  1. # EYZ0
  2. # EYZ0
  3. MySQL网站下载一个Debian包来更新apt源代码。
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb和选择你想要的选项。在我的情况下,我只需要启用MySQL Tools & Connectors
  5. # EYZ0
  6. # EYZ0
  7. 完成了。现在可以运行新的MySQL客户端并连接到新的身份验证方法。
在下载和安装MySql时尝试使用旧密码,这对我有帮助。 或者遵循Santhosh Shivan发布的Mac OS的方法

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

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

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

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

enter image description here

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. < p >退出……# EYZ0

  5. < p >完成了!

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

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

注意:在Mac big Sur上,最新的两个版本:8.0.22和8.0.23是错误的,不能工作。

使用8.0.21,直到这些被修复

我在M1 (arm64)中运行docker,在docker bash中直接更改的方式不适合我。相反,我将mysql映像更改为 # EYZ0 平台设置为 # EYZ0 并添加default_authentication_plugin=mysql_native_password 到my.cnf 然后,重新构建容器

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

apk add mariadb-connector-c

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

PIP卸载mysql-connector

然后安装 PIP install mysql-connector-python