我需要使用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设置的字段允许我连接?
答案 0 :(得分:3)
mysql_old_password
支持已从5.7.5中的mysql客户端库中删除,因此您可能正在使用较新版本的客户端库。
如果您需要使用旧密码身份验证连接到服务器,则必须降级客户端库版本。
您也可以尝试pymysql而不是MySQLdb,它应该still have支持旧密码哈希值。
答案 1 :(得分:0)
要连接到仍使用old_password的数据库服务器,我使用了pymysql。 所有其他模块都给出错误'格式错误的数据包'