使用MySQLdb Python模块和mysql_old_password

时间:2016-08-10 13:55:39

标签: python mysql mysql-python

我需要使用Python连接到使用mysql_old_password身份验证插件的数据库。我没有数据库管理员权限,因此我无法更改此设置,因此请不要建议。

我刚刚安装了MySQLdb模块,已下载here。关于这个问题的其他stackoverflow问题让我相信可以在这个模块中使用旧的身份验证,但是当我设置连接时(出于隐私原因删除了db信息),我收到以下错误:

('Unexpected error:', <class '_mysql_exceptions.OperationalError'>)
Traceback (most recent call last):
  File "convert_db.py", line 48, in <module>
    main()
  File "convert_db.py", line 25, in main
    prod_con = MySQLdb.connect('xxxx', 'xxxx', 'xxxx', 'xxxx')
  File "/Library/Python/2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/MySQLdb/connections.py", line 193, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2059, "Authentication plugin 'mysql_old_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/mysql_old_password.so, 2): image not found")

这似乎表明我只需要从某个地方下载插件图片 - 这可能吗?或者是否有一些我可以使用MySQLdb设置的字段允许我连接?

2 个答案:

答案 0 :(得分:3)

mysql_old_password支持已从5.7.5中的mysql客户端库中删除,因此您可能正在使用较新版本的客户端库。

如果您需要使用旧密码身份验证连接到服务器,则必须降级客户端库版本。

您也可以尝试pymysql而不是MySQLdb,它应该still have支持旧密码哈希值。

答案 1 :(得分:0)

要连接到仍使用old_password的数据库服务器,我使用了pymysql。 所有其他模块都给出错误'格式错误的数据包'