0

我实际上发现了一篇几乎总结了我的问题的博客文章。它在

http://simon04.net/2013/03/python3-mysql/

博客文章是最清楚但总结的:我目前正在尝试使用名为 PyMySQL3 的 python 包访问远程 MySQL 数据库。但是我不断收到错误消息:“AttributeError:'bytes'对象没有属性'encode'”。从上面的博客文章和其他一些研究来看,我认为这与我的数据库具有旧的身份验证方法有关。

但是,我很困惑,因为旧的身份验证方法似乎在 MySQL 4.0 中的某个时候被淘汰了。我拥有的数据库运行 MySQL 5.0.51a。我的数据库不应该有正确的身份验证吗?

我已经为此工作了一段时间并且有点沮丧。希望有人可以提供帮助。谢谢,

4

2 回答 2

0

来自https://github.com/petehunt/PyMySQL/issues/64

对我来说,这个问题是由于使用了旧的身份验证方法(参见 http://dev.mysql.com/doc/internals/en/authentication-method.html)。创建一个新用户(重置密码也可以)并确保 mysql.user 表中该用户的密码列以 * 开头(否则根据上面的链接检查服务器配置),解决了问题我。

您是否使用您提到的这个版本创建了用户?

该线程还显示了如何解决代码中的问题,告诉我何时需要其他帮助来解决它。我会相应地编辑我的答案。

于 2013-05-04T19:19:03.597 回答
0

好的,在进行更多调查时,我认为我的托管公司(aplus.net)可能不是最新的。反正我打算换公司,所以我在另一家公司开了一个新账户。现在我与 PyMySQL3 连接没有问题。显然,我的旧托管公司不是最新的,或者至少他们的 sql 配置破坏了 PyMySQL3。

不过感谢您的回复。希望没有多少其他人有这个问题,因为切换托管公司并不总是最好的答案=O

于 2013-05-05T08:19:30.093 回答