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

12 投票
2 回答
62093 浏览
提问于 2025-04-16 21:21

我在虚拟机里尝试连接一个域中的数据库。这个在XP系统上可以正常工作,但在Win7上却不行,出现了这样的错误:“OperationalError: (1042, "Can't get hostname for your address")”。

我试着关闭防火墙之类的设置,但这并没有什么用。我并不需要DNS解析,因为那样只会让一切变得更慢。所以我想使用“skip-name-resolve”这个选项,但在用Python的MySQLdb时找不到my.ini或my.cnf文件,那我该怎么才能使用这个选项呢?

谢谢你的帮助!
- 亚历克斯

2 个回答

1

这个选项需要在服务器上的MySQL配置文件中设置。客户端的API,比如MySQLdb,是无法设置这个选项的。这是因为涉及到潜在的安全问题。

也就是说,我可能想要拒绝来自某个特定主机名的访问。如果启用了skip-name-resolve,那么这个方法就行不通了。(老实说,通过主机名来控制访问可能也不是最好的主意。)

37

在 /etc/mysql/my.cnf 文件中添加以下这一行(skip-name-resolve)

[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
skip-name-resolve

然后重启 mysql 服务器

撰写回答