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

使用MySQLdb连接远程MySQL 5.5.33遇mysql_old_password认证错误求助

解决MySQLdb连接时"mysql_old_password"插件找不到的问题

这个错误是因为你的MySQL用户testuser使用了旧版的mysql_old_password认证插件,而当前环境的MySQL客户端/驱动限制了该插件的使用。以下是可行的解决办法:

方法1:更新数据库用户的认证方式(推荐)

登录到远程MySQL 5.5.33服务器(使用具有权限的账号,如root),执行以下步骤:

  1. 查看目标用户的当前认证插件:
SELECT user, host, plugin FROM mysql.user WHERE user = 'testuser';
  1. 如果结果中plugin字段为mysql_old_password,执行命令更新用户密码并切换到mysql_native_password插件:
-- 替换'%'为实际的客户端IP或允许的主机范围,比如你的本地IP
SET PASSWORD FOR 'testuser'@'%' = PASSWORD('test2025');
FLUSH PRIVILEGES;

或者通过更新用户表的方式(适用于MySQL 5.5):

UPDATE mysql.user 
SET password = PASSWORD('test2025'), plugin = 'mysql_native_password' 
WHERE user = 'testuser' AND host = '%';
FLUSH PRIVILEGES;

方法2:调整MySQL服务器配置(若允许修改)

如果服务器上有多个旧插件用户需要兼容,可以修改MySQL的配置文件(通常是my.cnf或my.ini):

  • 找到old_passwords配置项,将其值改为0(MySQL 5.5中默认可能为1):
old_passwords = 0
  • 重启MySQL服务,之后新创建的用户会默认使用mysql_native_password插件,但已存在的旧用户仍需按方法1手动更新。

验证连接

修改完成后,重新运行你的Python代码:

import MySQLdb

try:
    mydb = MySQLdb.connect(
        host = "test.corp.com",
        user = "testuser",
        passwd = "test2025",
        db = "testingdb"
    )
    print("Database connection successful.")
except MySQLdb.Error as err:
    print(err)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:27:34