返回

一劳永逸解决 MySQL 主机和容器内 MySQL 连接的认证问题

后端

在容器内连接 MySQL 时解决 "Authentication plugin 'caching_sha2_password'" 错误

MySQL 作为当今最流行的关系型数据库,广泛应用于各个行业。随着云计算和容器技术的兴起,越来越多的企业和组织开始将 MySQL 部署在容器环境中。但是,在容器内连接 MySQL 时,您可能会遇到 "Authentication plugin 'caching_sha2_password'" 错误。

错误根源:加密规则的改变

此错误的原因在于 MySQL 8 及更高版本使用新的认证插件 caching_sha2_password,而旧版本的 MySQL(通常是 MySQL 5.7 及以下版本)使用的是 mysql_native_password 插件。当您使用旧版本的数据库管理工具连接到 MySQL 8 或更高版本时,就会出现该错误。

解决方案

要解决此问题,有两种选择:

解决方案 1:升级 Navicat 驱动

您可以升级 Navicat 的驱动版本。Navicat 官方网站提供了最新的驱动程序下载,只需按照下载链接中的说明进行操作即可。安装新驱动后,重新启动 Navicat,即可成功连接到 MySQL 8 或更高版本的数据库。

解决方案 2:将 MySQL 用户密码加密规则还原成 mysql_native_password

如果您不想升级 Navicat 驱动,还可以通过修改 MySQL 用户的密码加密规则来解决此问题。具体步骤如下:

  1. 使用 Navicat 或其他数据库管理工具连接到 MySQL 数据库。
  2. 创建一个新的 MySQL 用户,并设置密码。
  3. 使用以下命令将新用户的密码加密规则修改为 mysql_native_password:
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
  1. 重新启动 MySQL 服务。

修改密码加密规则后,您就可以使用旧版本的 Navicat 或其他数据库管理工具连接到 MySQL 8 或更高版本的数据库了。

常见问题解答

  1. 为什么会出现 "Authentication plugin 'caching_sha2_password'" 错误?

答:此错误是因为 MySQL 8 及更高版本使用了新的认证插件 caching_sha2_password,而旧版本的 MySQL 使用的是 mysql_native_password 插件。

  1. 如何解决此错误?

答:您可以升级 Navicat 驱动或将 MySQL 用户密码加密规则还原成 mysql_native_password。

  1. 升级 Navicat 驱动后,我需要做什么?

答:升级驱动后,重新启动 Navicat 即可。

  1. 修改密码加密规则时,我需要使用什么命令?

答:使用以下命令:

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
  1. 修改密码加密规则后,我需要注意什么?

答:修改密码加密规则后,您需要重新启动 MySQL 服务。

结论

通过本文,您了解了 "Authentication plugin 'caching_sha2_password'" 错误的原因和两种解决方案。您可以根据自己的情况选择合适的方法来解决该问题。希望这篇文章对您有所帮助。