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

Python2.7+PyMySQL0.10.1连接AWS RDS MySQL8.0失败,求解决方案

解决Python 2.7 + PyMySQL 0.10.1连接MySQL 8.0的问题

你的错误核心是PyMySQL旧版本与MySQL 8.0默认认证插件不兼容,结合Python 2.7的环境限制,以下是可行的解决办法:

1. 修改数据库用户的认证插件

MySQL 8.0默认使用caching_sha2_password认证插件,而PyMySQL 0.10.1对该插件支持不佳。需将Python应用对应的数据库用户切换为兼容的mysql_native_password插件:

ALTER USER 'your_trac_db_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_user_password';
FLUSH PRIVILEGES;

替换your_trac_db_user、%(若为特定IP限制则改为对应IP)和your_user_password为实际值。

2. 显式指定连接参数

在PyMySQL的连接代码或Trac配置中,强制指定字符集和认证插件,避免自动协商时出现异常:

import pymysql

# 直接使用PyMySQL连接的示例
conn = pymysql.connect(
    host='your_rds_hostname',
    user='your_trac_db_user',
    password='your_user_password',
    database='your_trac_db_name',
    charset='utf8',
    auth_plugin='mysql_native_password',
    connect_timeout=10  # 增加超时时间,解决0秒超时问题
)

如果是Trac配置文件,在[database]段修改连接字符串:

database = mysql://user:pass@host/db?charset=utf8&auth_plugin=mysql_native_password

3. 调整RDS参数组(可选)

若后续有新建用户需求,可修改RDS参数组,将default_authentication_plugin设置为mysql_native_password,让新用户默认使用兼容认证方式。修改后需重启RDS实例生效。

4. 验证字符集配置

连接成功后执行以下SQL确认字符集配置:

SHOW VARIABLES LIKE '%character_set%';
SHOW VARIABLES LIKE '%collation%';

确保所有相关参数为utf8或utf8_unicode_ci,避免隐性字符集问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:50:02