【问题标题】:Possible MySQL authentication issue with python package (PyMySQL3)python包(PyMySQL3)可能存在MySQL身份验证问题
【发布时间】:2013-04-27 08:52:18
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python mysql authentication python-3.x pymysql


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我很确定用户都在使用 MySQL5。我正在通过一家网络托管公司,所以我没有正常的访问权限。我无法查看 mysql.user 表,但他们有一个用于修改用户的界面。他们都说数据库类型是MySQL5。另外,我将密码设置为以“*”开头的密码,尽管我不确定为什么会改变?仍然没有工作
    • 虽然关于服务器配置 - 我想那里可能会出现问题?我注意到有一个 MySQL 标志 secure_auth 设置为“NO”。你觉得这会有影响吗?不幸的是,我不能轻易更改 MySQL 系统变量。至少它说我没有访问权限...
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-01
      • 2014-11-26
      • 2019-07-23
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 2022-01-17
      • 2016-10-16
      相关资源
      最近更新 更多