【问题标题】:_mysql.pyd module is mishandling host name_mysql.pyd 模块错误处理主机名
【发布时间】:2014-07-29 20:21:45
【问题描述】:

注意:我看到this question的人显然有同样的问题,但是由于一年多没有出现任何有用的东西,而且我有更多线索,我在这里以我自己的方式询问.


我正在使用 Python 2.7.3 和 Django 1.2.7(代码库需要旧版本的 Django,但我没有降低 Python 的版本。这可能会导致下面的冲突。)

在配置文件中将用户名配置为“django”并将主机名配置为“正确的主机名”后,我在控制台中尝试 python manage.py runserver。这会导致以该错误结尾的跟踪:

File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 188, in __init__
super(Connection, self).__init__(*args, **kwargs2)

_mysql_exceptions.OperationalError: (1045, "Access denied for user 'django'@'wronghostname.com' (using password: YES)")

其中“wronghostname.com”是我当前机器的地址。这个异常似乎来自 _mysql.pyd 模块,因为 Connection 对象被定义为

class Connection(_mysql.connection):

由于某种原因,_mysql.connection 中的__init__ 函数正在破坏主机名。我确认 args 和 kwargs2 包含“正确的主机名”,因为我打印了它们。显然 _mysql.pyd 内部的某些东西错误地处理了进入它的主机信息。

我不知道我可以用 *.pyd 模块做什么。我想我要么需要一个可以正确处理主机名的版本,要么需要一些等效的解决方案。我曾想过尝试直接在“correcthostname.com”上运行,但可能无法直接在机器上运行。我被要求看看我是否可以从我自己的机器上运行。

感谢您的建议!

【问题讨论】:

    标签: python django mysql-python


    【解决方案1】:

    这是两个不同的主机名,服务于两个不同的目的。您提供给 Django 的“正确主机名”是运行 MySQL 服务器的计算机的名称。错误消息中的“wronghostname.com”是尝试连接到 MySQL 服务器的客户端计算机的名称。或者至少 MySQL 服务器认为客户端机器名称是在执行反向 IP 名称查找之后。只有当客户端和服务器在同一台机器上运行时,这两个名称才会相同。

    因此,_mysql.pyd 或其他任何东西都没有搞砸“正确的主机名”。它能够成功连接到在“正确主机名”上运行的 MySQL 服务器,因为这就是生成“拒绝访问”消息的原因。如果“wronghostname.com”不是您的客户端机器(运行 Django 的机器)的正确名称,那么 MySQL 服务器端有问题。

    【讨论】:

    • 感谢您的回复。好的,我想我没记错,这个错误是在验证步骤中发生的。我可以相信发生了一个与 mysql 数据库的连接,但为什么后一个会失败?不应该有任何东西要求我再次登录......如果它这样做了,为什么它会使用相同的用户名但不同的主机名?
    • 它使用相同的主机名连接到相同的 MySQL 服务器。您提供给 Django 的主机名仅用于其他目的。它不会传递给 MySQL 服务器,只有用户名。 MySQL 服务器不需要知道它自己的主机名是什么,它通过对主机名进行反向 IP 查找来计算客户端的主机名。然后它会检查该用户名和该客户端主机名是否被授权连接到服务器。
    • 再次感谢,这提供了丰富的信息。我要做的是在本地运行 Django(使用 runserver)以连接到正确主机名.com 上的数据库。我这样做的原因是管理员证明了正确主机名.com 上的客户端没有 Django 模块。听起来 corecthostname.com 上的 mysql 不愿意为来自 wronghostname.com 的任何人做任何事情。这是否意味着 mysql 的管理员可以将 wronghostname.com 添加到允许的客户端主机名列表中?
    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 2018-10-19
    • 2014-06-28
    • 2016-06-22
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多