摘要: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_username,your_host,your_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 服务器使修改生效。
酷瓜云课堂 - 开源知识付费解决方案
来源:鸠摩智首席音效师