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

Authentication plugin 'caching_sha2_password' cannot be loaded

提问人:Aman Aggarwal 提问时间:3/9/2018 最后编辑:ShadowAman Aggarwal 更新时间:9/23/2023 访问量:1038846

问:

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

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

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

有什么解决方案吗?

mysql-workbench mysql-8.0

评论

4赞 Raymond Nijland 3/9/2018
如果将 MySQL 8.0 配置为在mysql_native_password模式下运行,则可能无法解决此问题。
10赞 Mike Lischke 3/11/2018
正确,MySQL Workbench 需要连接器更新才能使用缓存的 sha2 密码(即将推出)。
9赞 ChrisR 5/30/2018
我将默认登录设置为本机并重新启动,问题仍然存在,我无法登录以创建新用户。令人惊讶的是,在 2018 年,安装 Mysql 和工作台并没有开箱即用。劣质质量控制。
2赞 Mike Lischke 7/24/2018
我不知道你从哪里得到的印象是不再有 32 位 mysql 客户端库了,但事实并非如此。事实是,MySQL Workbench 不再提供 32 位版本。
3赞 toshi 4/28/2019
那些建议使用较弱加密的答案不是正确的方法。使用其他客户端,如 tableplus

答:

87赞 Aman Aggarwal 3/12/2018 #1

您可以通过使用以下 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。

谢谢

评论

7赞 LibertyPaul 4/21/2018
绝对不是解决缺少插件的问题。
1赞 Kevin Gagnon 5/8/2018
是的。问题是数据库管理软件还不能处理它。因此,除非您是 mysql 工作台开发人员,否则这是您现在的解决方法。
0赞 nipponese 6/21/2018
添加配置标志后创建新用户的部分至关重要。
486赞 twocold 4/20/2018 #2

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

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

评论

78赞 LibertyPaul 4/21/2018
如果OP想使用全新的酷炫认证方法怎么办?
3赞 Oliver 2/19/2019
@BrianFitzGerald它是“caching_sha2_password”,请链接到此处此处
1赞 Vivek Garg 3/20/2019
成功了。谢谢伙计。 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
2赞 Carl Du Plessis 3/19/2020
其他人提到将其添加到配置中,但这对我不起作用。使用 ALTER 语句有效。谢谢!:)default_authentication_plugin=mysql_native_password
5赞 Jack BeNimble 11/10/2020
我不得不将localhost更改为“%”。这允许远程连接到root。更改用户 'root'@'%' IDENTIFIED BY 'MYPASSWRD' WITH mysql_native_password;
42赞 井上智文 4/20/2018 #3

喜欢这个?

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。

评论

3赞 Thomas Ducrot 8/27/2018
添加 --default-authentication-plugin=mysql_native_password 就像一个魅力 <3 谢谢
374赞 Santhosh Sivan 4/22/2018 #4

注意:对于MAC OS

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

Image description

评论

4赞 monkSinha 5/7/2018
这项工作,谢谢。我认为它有效,因为MySQL工作台使用传统密码加密连接到数据库服务器。也可以在安装 MySQL 并选择 Legacy 加密而不是推荐的强密码加密时完成。
2赞 Michael Yang 6/1/2018
某些版本的 mysql 具有不同的设置面板,这不起作用
13赞 Mike Lischke 6/13/2018
广告回到旧的和不太安全的身份验证根本不是一个好的解决方案。
87赞 JavaRunner 7/23/2018
我的“系统偏好设置”中没有 MySQL
2赞 jpinelo 11/10/2020
这方面有什么进展吗?现在是否可以在2020年底使用MariaDb连接到MySQL而不使用遗留安全性?
76赞 Montecarlo 4/24/2018 #5

目前(2018 年 4 月 23 日),您需要下载开发版本GA 的不起作用。

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

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

评论

7赞 Cristian Scutaru 6/8/2018
这实际上是正确的答案:MySQL 8.0 需要 MySQL Workbench 8.0,不幸的是,它看起来仍处于测试模式。但是一旦安装,您可以坚持使用新的SHA密码加密,而无需更改任何内容。
1赞 Mike Lischke 6/13/2018
不是测试版,而是候选发布 (RC)。GA(正式发布)版本即将推出。
0赞 Wojciech Fornal 7/9/2018
对我来说是最好的主意。
2赞 Donald Rich 7/9/2018
现在仍然如此。安装 GA 版本仍会导致无法使用推荐的密码加密登录。没有警告 GA 版本仅适用于旧式身份验证。
2赞 Bruno Silvano 8/14/2018
至少在 MacOS 中,GA 版本目前是 8.0.12 (2018/08/13) 并解决了这个问题!谢谢!
24赞 Preetham 4/25/2018 #6

对于 Windows 10

  1. 修改文件my.iniC:\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,然后使用新用户凭据打开新连接。

我面临着同样的问题,这奏效了。

8赞 Bruno Casali 4/25/2018 #7

如果你像我一样在 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!)
22赞 Ahmed Ziyad 4/30/2018 #8
  • 打开 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 常见问题解答

评论

0赞 Volte 1/1/2019
这奏效了。为什么?我在尝试连接时遇到此错误,但没有密码,这在命令行中有效,但在 .rootSequel Pro
0赞 banzai 5/24/2020
像魅力一样工作,与线程完全相关 开始问题,请注意:您必须拥有 Mac os Catalina、docker 19.03、mysql 最新映像,执行此命令$docker从 dzone 网站运行 -p 3306:3306 -d --name mysql -e MYSQL_ROOT_PASSWORD=password mysql/mysql-server。
127赞 axelferreira 5/2/2018 #9

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

你都准备好了。

评论

0赞 Zach Smith 7/2/2018
这看起来可能是我正在寻找的一个很好的答案。但我不知道“这个”是什么。你是说公认的答案吗?或者另一个......
2赞 axelferreira 7/3/2018
是的,@ZachSmith,“这个”指的是被接受的回答者。
3赞 Eric 8/22/2018
而不是两个依赖于 shell 存在的命令(将来不确定)怎么样?docker exec -it CONTAINER_ID mysql --user=root --passwordbash
0赞 arcseldon 3/19/2019
这不适用于使用 docker desktop 2.0.3.0 (mac) 的 sequelpro 1.1.2。这些命令都有效,但登录时出现 Sequel Pro 错误 - 使用 mysql:latest (v8.0.15)
0赞 arcseldon 3/19/2019
正如其他人所报道的那样,使用 mysql 5.7 不需要任何东西:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
164赞 Araz Ghazaryan 5/7/2018 #10

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

评论

2赞 amelvin 8/29/2018
更改 my.ini 对我不起作用 - 但命令提示符更改确实如此。
3赞 Abdull 4/7/2020
my.ini文件位置: stackoverflow.com/a/20311286/923560
0赞 Alcides 4/26/2020
我只想指出,必须在您要连接的服务器中完成配置,并且 ALTER USER 为我工作以从 Windows 连接到远程 mysql 服务器
0赞 Geza Turi 6/11/2020
不限于 Windows 10
0赞 gotube 8/11/2022
“newrootpassword”是一个神奇的常量,还是我应该选择一个新的 root 密码并将其放在那里?
13赞 Dylan Pierce 5/7/2018 #11

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

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

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

评论

4赞 Zach Smith 7/2/2018
使用版本 8 而不是版本 5 是有正当理由的。我之所以在这个页面上,是因为我想使用版本 8 而不是版本 5
2赞 Francesco Borzi 11/17/2018
使用而不是为我解决问题mysql:5.7mysql:latest
4赞 Benjamin Lin 5/11/2018 #12

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

评论

0赞 Sum None 3/17/2019
这就是为我修复它的原因。我使用的是带有 6.3 服务器的旧 MySQL Workbench 8.0。虽然这里的许多答案都说要降级服务器兼容性,但我只是将我的 Workbench 版本升级到最新的 8.0 版本(当前为 8.0.15)。
17赞 maximatt 5/27/2018 #13

这是我在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 |
+---+
5赞 Vikky 6/6/2018 #14

几乎就像上面的答案一样,但可能在简单的查询中,我在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';
9赞 Pratik Patil 6/6/2018 #15

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

假设MySQL用户名是,密码是rootadmin

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

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' “管理员”

60赞 ImtiazeA 6/7/2018 #16

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

MySQL Web Installer - Home Screen

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

MySQL Installer - Authentication Method

进入此选项卡后,使用第二个选项“使用旧式身份验证方法(保留MySQL 5.x兼容性)”。

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

评论

1赞 oraclesoon 6/29/2018
我手动解压缩mysql-8.0.11-winx64.zip无法轻松解决“无法加载caching_sha2_password”问题。但是使用mysql-installer-community-8.0.11.0.msi并且我遵循上述建议,MySQL Workbench 8.0.11可以登录MySQL服务器8.0.11。
0赞 gotube 8/11/2022
做到了这一点。仍然有问题
6赞 ankit 7/8/2018 #17

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

谢谢。

0赞 Daniel Adigun 7/22/2018 #18

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

docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql
6赞 alberto56 10/2/2018 #19

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

评论

0赞 brcebn 12/2/2018
就在头上!谢谢。
3赞 Deepak rayathurai 3/3/2019 #20

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

转到 Mysql Workbench -> Server-> 用户和权限 1.单击添加帐户

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

enter image description here

-3赞 Laloi 3/4/2019 #21

我通过安装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/

-5赞 nickitalyano 3/10/2019 #22

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

81赞 arcseldon 3/19/2019 #23

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

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

请参阅 sequelpro 第 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+,在这种情况下(如果需要),这里提供的关于类型问题的其他答案确实有效。但是 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;

评论

1赞 martn_st 3/20/2019
非常感谢您分享这个。在意外删除我的MySQL开发容器后,我正在尝试完全相同的组合。
1赞 Oleksii Shnyra 4/20/2019
非常遗憾的是,Sequel Pro 不再积极开发:(最新消息日期为2016年4月3日,而已经是2019年了。这是我见过的最好的MySQL浏览器工具。
0赞 Peter W 5/8/2019
@OleksiiShnyra确实有几年没有生产版本了,但仅供参考,更新的“每晚”版本可用。sequelpro.com/test-builds 和通过 .brew cask install homebrew/cask-versions/sequel-pro-nightly
0赞 Peter W 5/8/2019
对于那些能够通过命令行(客户端)及其 myslq.user 表登录的人来说,有一种解决方法可以使 SequelPro 正常工作,此处注明:github.com/sequelpro/sequelpro/issues/...mysqlALTER
0赞 Aidin 6/1/2019
如果您使用的是 MySQL 8 并且不想降级到 ,您可以按照以下步骤操作: stackoverflow.com/a/56402217/2321594mysql_native_password
6赞 Shammoo 4/9/2019 #24

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

10赞 Darrell Duane 6/13/2019 #25

我发现

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 上

评论

0赞 DaFudgeWizzad 6/21/2019
这在 Centos 7 上对我有用。由于某种原因,默认情况下,我的密码被保存为caching_sha2_password,并且在尝试使用phpMyAdmin登录时出现错误#1251。
5赞 huggie 8/29/2019 #26

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

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

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

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. MySQL 网站下载一个 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客户端并使用新的身份验证方法进行连接。

评论

0赞 Andrew Landsverk 6/11/2020
这是 WSL 问题的正确答案,谢谢!
1赞 Anupriya Krishnamoorthy 11/30/2019 #27

尝试在下载和安装MySql时使用旧密码,这对我有帮助。 或者按照 Santhosh Shivan 为 Mac OS 发布的方法进行操作。

22赞 elad silver 3/13/2020 #28

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

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
3赞 TAHA SULTAN TEMURI 7/29/2020 #29

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

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

enter image description here

在这里阅读

因此,通过检查旧式身份验证,问题得到了解决。

评论

1赞 Mustafa 3/9/2022
这也对我有用。苹果电脑!
65赞 Caio Ladislau 10/5/2020 #30

注意:对于 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控制台上输入:,如果您没有root用户的密码,则:$ mysql -u root -p

  2. 使用 mysql db:mysql> use mysql;

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

  4. 退出。。。mysql> quit;

  5. 做!

评论

0赞 Wordpressor 12/10/2020
在MacOS上不起作用,密码会更新,我可以sh到容器并使用mysql,但无法从外部连接到数据库。
4赞 Houman 3/14/2021
您刚刚启用了旧密码身份验证。这不是一个很好的解决方案。
2赞 Muhammad Wajahat Anwar 4/11/2021
我在 ubuntu 上遇到了这个问题,这个解决方案效果很好。谢谢
3赞 bareMetal 6/3/2021
适用于通过 brew 安装的 macOS bigSur (11.4) 和 mysql ( 8.0.25)
1赞 Anon 2/27/2021 #31

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

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

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

使用 8.0.21 直到这些问题得到解决

1赞 htlbydgod 11/10/2021 #32

我在 M1 (arm64) 中运行 docker,在 docker bash 中更改的直接方法对我不起作用。相反,我将 mysql 映像更改为 ,并将平台设置为并添加到 my.cnf 然后,重新生成容器。mysql:8.0.26linux/x86_64default_authentication_plugin=mysql_native_password

17赞 keyblade95 3/29/2022 #33

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

apk add mariadb-connector-c

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

评论

0赞 Erik Pöhler 11/9/2022
这是实际的解决方案,应该是公认的答案。顺便说一句,在macOS上,它就像.brew install mariadb-connector-c
0赞 Animesh Nayak 11/14/2022 #34

pip卸载mysql连接器

,然后安装 pip安装mysql连接器-python

0赞 Paul Waldo 1/5/2023 #35

我收到错误。事实证明,这是我自己的错;我输入了错误的用户名。一旦我纠正了错别字,我就可以很好地连接了。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

0赞 user1012513 1/20/2023 #36

在 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

我通过升级系统解决了这个问题。

0赞 Ahsan Horani 5/4/2023 #37

对于 docker-compose.yml,请在数据库服务中添加此行

command: "--max_allowed_packet=256M && --default-authentication-plugin=mysql_native_password"

这将设置为您的默认身份验证插件。并且还会升级 [可选]mysql_native_passwordmax_allowed_packet

0赞 Tarun Kantiwal 8/13/2023 #38

要使用来自其他 BE 容器的 mysql_native_password 访问 mysql,应该使用“root”@“%” 而不是 root@localhost并重新构建您的后端容器,它应该可以工作。

 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mypasswrd'