在Mac上使用python应用程序(Yosemite OSX 10.10)我遇到了这个问题:
OperationalError: (2049, "Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)")
通过一些研究,似乎我的客户端(即mysql-python)正在使用安全身份验证,并且用户使用旧样式加密的密码,即 4.1.1之前。< /强>
由于我没有办法处理数据库方面的事情,我想知道是否有解决方法或方法来停用 mysql-python 上的 secure_auth ?< / p>
答案 0 :(得分:2)
我正在调整here的答案:
最终,您必须告诉具有旧式密码的客户端将其更改为新式密码。 Old passwords are not secure.
现在,您收到错误,因为客户端已设置secure_auth,但他们有一个旧密码。要使用旧密码登录,客户端必须在客户端禁用secure_auth。具体取决于您使用的是哪个客户。
其他一些解决方法可以在MySQL文档中找到:Client does not support authentication protocol
答案 1 :(得分:0)
我找到了治疗方法!
或者更确切地说是一种解决方法。从这个post我决定选择稍微旧版本的MySQL和MySQLdb,这就解决了这个问题。
我是这样做的:
我以前为我的python安装了mysql_python,并安装了mysql的brew版本。
我发现了所有这些。
我通过查找源代码的最后一个稳定版本来寻找安装MySQLdb的方法。
我编译了它们(遵循isntructions here),安装它们然后我找了一个稳定版本的MySQL客户端(MySQL网站是最好的地方)并安装完全适合我的5.5版本要求。
我让mysql自动启动然后重新启动我的计算机(但你可以重新启动apache)并检查所有路径是否正确并且右边包含在正确的位置(你可以检查上面的链接)。
现在一切正常!
希望它有所帮助。