You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下Python用mysql.connector连接MySQL报错如何解决

Ubuntu 20.04 下Python连接MySQL报错的排查解决步骤

报错原因说明

  • 第一个Authentication plugin 'caching_sha2_password' is not supported报错是因为MySQL 8.0默认使用caching_sha2_password作为认证插件,你使用的mysql-connector版本不支持该插件,添加auth_plugin='mysql_native_password'的修改方向是正确的。
  • 后续的Access denied for user 'root'@'localhost'报错是因为MySQL root用户未配置mysql_native_password对应的密码,或本地登录权限未正确配置。

具体解决步骤

1. 登录MySQL终端修改用户配置

Ubuntu 20.04默认安装的MySQL支持sudo免密码登录root用户,执行以下命令进入MySQL shell:

sudo mysql -u root

执行SQL查看root用户当前的认证插件配置:

SELECT user, host, plugin FROM mysql.user WHERE user='root';

如果返回结果中plugin字段不是mysql_native_password,继续执行以下修改命令。

2. 调整root用户认证方式与密码

执行SQL修改root用户的认证插件,同时设置登录密码,将命令中的你的实际root密码替换为你自己要设置的密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的实际root密码';

如果你代码中host参数写的是127.0.0.1,额外执行以下命令:

ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '你的实际root密码';

刷新权限让配置生效:

FLUSH PRIVILEGES;

执行exit退出MySQL shell。

3. 测试本地密码登录

执行以下命令验证密码配置是否生效,输入刚才设置的密码后能正常登录即为配置成功:

mysql -u root -p

4. 修正Python连接代码

注意password字段要和你在MySQL中设置的root密码完全一致,不要有多余空格或者拼写错误

import mysql.connector
cnx = mysql.connector.connect(
    user = 'root', 
    password = '你的实际root密码', 
    host = 'localhost', 
    database = 'mydb', 
    auth_plugin='mysql_native_password'
)
cnx.close()

额外排查点

如果修改后仍报错,检查以下内容:

  • 确认mydb数据库已经存在,不存在的话先登录MySQL执行CREATE DATABASE mydb;创建
  • 确认root用户有访问mydb的权限,登录MySQL执行GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'localhost';,之后执行FLUSH PRIVILEGES;刷新权限
  • 升级mysql连接器到最新版本,执行pip install --upgrade mysql-connector-python

内容的提问来源于stack exchange,提问作者Javad Besharati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:09:02