提问人:Aman Aggarwal 提问时间:3/9/2018 最后编辑:ShadowAman Aggarwal 更新时间:9/23/2023 访问量:1038846
无法加载身份验证插件“caching_sha2_password”
Authentication plugin 'caching_sha2_password' cannot be loaded
问:
我正在将 MySQL - 8.0 与 MySQL Workbench 连接并收到以下错误:
无法加载身份验证插件“caching_sha2_password”: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): 镜像 未找到
我也尝试过使用其他客户端工具。
有什么解决方案吗?
答:
您可以通过使用以下 Alter 命令更改用户来更改用户密码的加密:
更改用户“用户名”@“ip_address”,标识为mysql_native_password BY “密码”;
或
我们可以通过使它与旧密码插件一起使用来避免此错误:
首先在 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';
评论
default_authentication_plugin=mysql_native_password
喜欢这个?
docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql --default-authentication-plugin=mysql_native_password
mysql -uroot --protocol tcp
https://github.com/GitHub30/docs/blob/change-default_authentication_plugin/mysql/stack.yml
或者您应该使用 MySQL Workbench 8.0.11。
评论
注意:对于MAC OS
- 从“系统偏好设置”中打开 MySQL,>初始化数据库>
- 键入新密码。
- 选择“使用旧密码”
- 再次启动服务器。
- 现在连接 MySQL Workbench
评论
目前(2018 年 4 月 23 日),您需要下载开发版本。GA 的不起作用。
我无法连接到最新的 GA 版本 (6.3.10)。
它适用于(来自 https://dev.mysql.com/downloads/workbench/,选项卡开发版本)。mysql-workbench-community-8.0.11-rc-winx64.msi
评论
对于 Windows 10,
修改文件
my.ini
C:\ProgramData\MySQL\MySQL Server 8.0\
[mysqld] default_authentication_plugin=mysql_native_password
重新启动MySQL服务。
在命令行中登录MySQL,在MySQL中执行以下命令:
创建新用户。
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
授予所有权限。
GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
打开 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(在创建新的 localhost 连接并使用新凭据开始使用该程序后,您应该能够执行此操作)。
使用上述用户名(本机用户)设置新的本地主机连接,使用密码登录 (new_password)
礼貌:Career365 团队回答的 UDEMY 常见问题解答
评论
root
Sequel Pro
我遇到了同样的问题,但是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';
你都准备好了。
评论
docker exec -it CONTAINER_ID mysql --user=root --password
bash
docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
对于 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
评论
mysql:5.7
mysql:latest
适用于 macOS 的 MySQLWorkbench 8.0.11 解决了这个问题。 我可以与在 docker 中运行的受 root 密码保护的 mysql 实例建立连接。
评论
这是我在docker-compose中的databdase定义:
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 boot应用程序中以及休眠时遇到了这个错误。我们通过对数据库运行以下查询来创建一个新用户。我相信这是一种临时解决方法,可以使用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 8.0 上安装 MySQL 10 后对我有用的解决方案。
假设MySQL用户名是,密码是root
admin
打开命令提示符并输入以下命令:
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysql_upgrade -uroot -padmin
mysql -uroot -padmin
使用 mysql_native_password BY 标识的 ALTER USER 'root'@'localhost' “管理员”
我使用“MySQL Web 安装程序”在我的 Windows 10 PC 上安装 MySQL,并且在尝试使用 MySQL 工作台进行连接时遇到了同样的问题。我通过从安装程序窗口重新配置服务器来解决这个问题。
单击“重新配置”选项将允许重新配置服务器。单击“下一步”,直到到达“身份验证方法”。
进入此选项卡后,使用第二个选项“使用旧式身份验证方法(保留MySQL 5.x兼容性)”。
保持其他一切不变,这就是我解决问题的方式。
评论
打开我的sql命令promt:
然后输入MySQL密码
最后使用:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
参考:https://stackoverflow.com/a/49228443/6097074
谢谢。
下载 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,并停止工作。我将映像更改为mysql:5,但不再收到此错误。
评论
转到 Mysql Workbench -> Server-> 用户和权限 1.单击添加帐户
2.在“登录”选项卡下,提供新的详细信息,并确保选择“身份验证类型”作为标准,并选择相应的管理角色和架构权限
我通过安装MySQL 5.7解决了这个问题:
第 1 步 – 启用 MySQL 存储库
首先,您需要在系统上启用 MySQL 5.7 社区发布 yum 存储库。用于 yum 仓库配置的 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 服务器
由于您已成功在系统上启用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 容器上运行的数据库,那么您就不走运了。
我的设置是使用 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+,在这种情况下(如果需要),这里提供的关于类型问题的其他答案确实有效。但是 sequelpro 是 MySql 8+ 的不行caching_sha2_password
最后,我放弃了 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;
评论
brew cask install homebrew/cask-versions/sequel-pro-nightly
mysql
ALTER
mysql_native_password
当使用的工具与 MySQL8 不兼容时会出现此错误,请尝试更新到最新版本的 MySQL Workbench for MySQL8
我发现
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 上
评论
如果您尝试从另一台计算机(无论是否是 Docker)从基于文本的 MySQL 客户端连接到 MySQL 服务器
此处的大多数答案都涉及从桌面客户端进行连接,或要求您切换到较旧的身份验证方法。如果您将它与MySQL客户端(基于文本)连接,我让它与Docker容器中的Debian Buster一起使用。
假设您已经设置了 apt 系统和 wget,请执行以下操作:
sudo apt-get update
sudo apt-get install lsb-release -y
- 从 MySQL 网站下载一个 Debian 软件包,该软件包会为您更新 apt 源代码。
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
,然后选择所需的选项。就我而言,我只需要启用。MySQL Tools & Connectors
sudo apt-get update
sudo apt-get install mysql-client -y
- 做。现在,您可以运行新的MySQL客户端并使用新的身份验证方法进行连接。
评论
尝试在下载和安装MySql时使用旧密码,这对我有帮助。 或者按照 Santhosh Shivan 为 Mac OS 发布的方法进行操作。
虽然这不应该是一个真正的解决方案,但如果你被卡住了,它确实可以在本地工作
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
实际上,MySql在安装时允许两种类型的身份验证。
- 密码加密
- 传统加密
因此,通过检查旧式身份验证,问题得到了解决。
评论
注意:对于 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
我通过以下步骤解决了它:
在mysql控制台上输入:,如果您没有root用户的密码,则:
$ mysql -u root -p
使用 mysql db:
mysql> use mysql;
更改用户以解决问题:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
退出。。。
mysql> quit;
做!
评论
刚刚下载了最新的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 映像更改为 ,并将平台设置为并添加到 my.cnf
然后,重新生成容器。mysql:8.0.26
linux/x86_64
default_authentication_plugin=mysql_native_password
如果仍要使用新的身份验证方法,正确的解决方案是安装包。对于 Alpine,请运行:mariadb-connector-c
apk add mariadb-connector-c
这会将缺少的库添加到 中。caching_sha2_password.so
/usr/lib/mariadb/plugin/caching_sha2_password.so
评论
brew install mariadb-connector-c
pip卸载mysql连接器
,然后安装 pip安装mysql连接器-python
我收到错误。事实证明,这是我自己的错;我输入了错误的用户名。一旦我纠正了错别字,我就可以很好地连接了。ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
在 Debian 11 中,我有 MySQL 客户端,但出现以下错误:mariadb-client-10.3
ERROR 1045 (28000): 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
我通过升级系统解决了这个问题。
对于 docker-compose.yml,请在数据库服务中添加此行
command: "--max_allowed_packet=256M && --default-authentication-plugin=mysql_native_password"
这将设置为您的默认身份验证插件。并且还会升级 [可选]mysql_native_password
max_allowed_packet
要使用来自其他 BE 容器的 mysql_native_password 访问 mysql,应该使用“root”@“%” 而不是 root@localhost并重新构建您的后端容器,它应该可以工作。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mypasswrd'
评论