pymysql版本与python/mysql不匹配是连接失败的常见根源:pymysql 1.1.x要求python ≥3.7,python 3.6需用1.0.3;mysql 8.0默认caching_sha2_password认证需pymysql ≥1.0.3支持,否则报认证插件无法加载。

PyMySQL版本与Python/MySQL不匹配,是连接失败的常见根源,不是配错密码或端口那么简单。
检查当前PyMySQL版本和Python解释器是否兼容
PyMySQL 1.1.x 要求 Python ≥3.7,而你若用的是 Python 3.6 或更早,pip install pymysql 默认装的可能是 1.1.x,直接报 SyntaxError 或导入失败。运行以下命令确认:
python -c "import sys; print(sys.version)"
pip show pymysql
如果输出显示 Python 3.6 但 PyMySQL 是 1.1.0+,就必然冲突。此时必须降级:
-
pip install pymysql==1.0.3(支持 Python 3.6–3.10) - 若用 Python 3.12+,则必须用
pymysql>=1.1.2,否则会缺zoneinfo或 TLS 相关符号
MySQL 8.0+ 的 caching_sha2_password 认证导致连接被拒
PyMySQL 1.0.2 之前不支持 MySQL 8.0 默认认证插件,会报 Authentication plugin 'caching_sha2_password' cannot be loaded。这不是驱动没装好,是协议层不识别。
两种解法任选其一:
- 在 MySQL 中为用户切换认证方式:
ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass'; FLUSH PRIVILEGES; - 升级 PyMySQL 到
1.0.3+(推荐),它原生支持该插件,无需改服务端配置
注意:降级到 0.9.3 不能解决此问题,它根本不支持 MySQL 8.0 协议。
PyCharm 或 IDE 内置数据库工具连不上,但命令行能连
PyCharm 自带 JDBC 驱动(如 mysql-connector-java),和 Python 的 pymysql 完全无关。它报错 Access denied for user 或 Unknown database,大概率是你在 IDE 里填的驱动版本和服务器 MySQL 版本不匹配。
查清服务器 MySQL 版本:
mysql --version
然后在 PyCharm 的 Database 工具窗口中:
- 点击右上角齿轮 →
Driver Files→ 移除所有现有 JAR - 点击
+ Download,选择与 MySQL 大版本一致的驱动(如 MySQL 5.7 → 选mysql-connector-j-5.1.49;MySQL 8.0 → 选mysql-connector-j-8.0.33) - 不要勾选“Use alternative driver”,保持默认
com.mysql.cj.jdbc.Driver
PyQt5 的 QMYSQL driver not loaded 不是 PyMySQL 问题
这个错误和 pymysql 完全无关,是 PyQt5 缺少 MySQL 原生驱动模块。它依赖系统级的 libmysql.dll 和 Qt 插件 qsqlmysql.dll。
关键点只有两个:
-
libmysql.dll的位数(32/64)必须和你的 Python 解释器完全一致,放错位置也没用——正确路径是PyQt5\Qt\bin\ -
qsqlmysql.dll必须存在于PyQt5\Qt\plugins\sqldrivers\下;若缺失,重装固定版本:pip install PyQt5==5.15.10(该版本自带完整 sqldrivers)
别试图用 pymysql “替代”这个错误,它们属于不同层级:一个是纯 Python 协议实现,一个是 Qt 框架的 C++ 数据库插件。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











