如何在使用Python的MySQLdb时使用skip-name-resolve选项?

12
我在虚拟机上尝试从域连接到数据库。 在XP上可以工作,但在Win7上却无法正常工作,并退出并显示以下错误信息:“OperationalError:(1042,“无法获取您地址的主机名”)”
现在,我尝试禁用防火墙等,但无论如何都没有用。 我不需要DNS解析,这只会使一切变慢。 因此,我想使用“skip-name-resolve”选项,但是当使用Python的MySQLdb时没有my.ini或my.cnf,那么我该如何使用此选项?
感谢您的帮助 - Alex
2个回答

37
在 /etc/mysql/my.cnf 文件中添加以下行(skip-name-resolve)。
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
skip-name-resolve

重启mysql服务器


2
我认为 skip-locking 现在应该是 skip-external-locking - RNK
2
是的,如果添加 skip-external-lockingskip-name-resolve,你会遇到麻烦。 - Ratata Tata
3
@OrlandoLeite 你是什么意思? - AldoB
为什么会这样?@OrlandoLeite - Ivan Juarez

1

这是一个选项,需要在服务器上的MySQL配置文件中设置。它不能由客户端API(如MySQLdb)设置。这是因为可能存在安全隐患。

也就是说,我可能想要拒绝来自特定主机名的访问。启用skip-name-resolve后,这将无法实现。(不可否认,通过主机名进行访问控制可能并不是最好的想法。)


我使用了IP,如果你指的是主机名,那么仍然出现错误。 但是MySQLdb不仅仅是客户端API,它还是Python的服务器。你知道我在哪里可以进行这些设置吗?例如,并没有MySQL服务,这一切都在Python包中。 - CreeTar
MySQLdb不是一个MySQL服务器,而是一个客户端API。你仍然需要一个MySQL服务器来连接。 - Michael Mior
没关系,这对我的问题无所谓,因为即使使用IP,我仍然会遇到这个错误。 - CreeTar
你能否使用命令行客户端连接到你的MySQL服务器? - Michael Mior

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接