解决 Python 中 NotSupportedError with caching_sha2_password 的错误

摘要:MySQL 8.0 引入了caching_sha2_password作为默认认证插件,在之前的mysql_native_password的基础上增强了安全性。然而,并不是所有的客户端库 (包括某些版本的 Python MySQL 连接器) 默认情况下都完全支持

Python NotSupportedError with caching_sha2_password

在 Python 中使用 mysql 数据库时,可能遇到与身份验证插件相关的错误。

mysql.connector.errors.NotSupportedError: Authentication plugin ‘caching_sha2_password’ is not supported.

MySQL 8.0 引入了 caching_sha2_password 作为默认认证插件,在之前的 mysql_native_password 的基础上增强了安全性。然而,并不是所有的客户端库 (包括某些版本的 Python MySQL 连接器) 默认情况下都完全支持这种较新的身份验证方法。当试图连接 MySQL 8.0 数据库时,这个差异会导致 NotSupportedError 的出现。

(1) Update Your Connector

第一个也是最简单的解决方案是确保在 Python 环境中使用最新版本的 MySQL 连接器。最新版本增加了对 caching_sha2_password 的支持,您可以使用 pip 更新连接器。

pip install --upgrade mySQL-connector-python

(2) Change Authentication Plugin for MySQL User

如果更新连接器不能解决问题,或者出于兼容性原因必须使用旧的身份验证方法,则可以更改 MySQL 服务器身份验证插件,可以通过执行以下 SQL 命令来完成。

ALTER USER 'your_username'@'your_host' IDENTIFIED WITH mysql_native_password BY 'your_password';

替换 you_usernameyour_hostyour_password 为您的实际数据库用户名,主机和密码。

(3) Use an Alternative Connector

另一种方法是使用其它支持 caching_sha2_password 的 MySQL 连接器。一个流行的替代方案是 PyMySQL,您可以在项目中安装和使用它。

pip install PyMySQL

使用 PyMySQL 时,请确保相应地修改数据库连接代码。

(4) Configure MySQL Server to Use mysql_native_password

作为一个更全局的解决方案,你可以配置 MySQL 服务器使用 mysql_native_password 作为默认的身份验证插件。编辑 MySQL 服务器的配置文件 (my.cnf 或 my.ini) ,在 [mysqld] 部分下添加以下行:

[mysqld]default_authentication_plugin=mysql_native_password

修改完成后,重启 MySQL 服务器使修改生效。

酷瓜云课堂 - 开源知识付费解决方案

来源:鸠摩智首席音效师

相关推荐