2011-07-12 62 views
8

我嘗試從我的虛擬機連接到域中的數據庫。 它適用於XP,但不知何故,在Win7和與戒菸不工作: 「OperationalError:(1042,‘爲您的地址無法獲取主機名’)」如何在使用MySQLdb for Python時使用skip-name-resolve選項?

現在我試圖禁用防火牆之類的東西,但反正無所謂。 我不需要DNS解析,這隻會拖慢一切。 所以我想使用選項「skip-name-resolve」,但是在使用MySQLdb for Python時沒有my.ini 或my.cnf,那麼我該如何使用這個選項呢?

感謝您的幫助 -Alex

回答

1

這是需要在服務器上的MySQL配置文件中進行設置的選項。它不能由客戶端API設置,如MySQLdb。這是因爲潛在的安全影響。

也就是說,我可能想要拒絕來自特定主機名的訪問。啓用skip-name-resolve後,這將不起作用。 (誠​​然,通過主機訪問控制可能不是最好的主意,反正。)

+0

我使用IP,如果你是通過主機名來表示這種情況,仍然會出現錯誤。 但MySQLdb不止是客戶端API,它是Python的服務器。你知道我可以在哪裏設置這些設置嗎?沒有MySQL服務的例子,它的全部在python包中。 – CreeTar

+0

MySQLdb不是MySQL服務器,它是一個客戶端API。你仍然需要一個MySQL服務器來連接。 –

+0

好吧,無論如何,這對我的問題無關緊要,因爲即使在使用IP時也會出現此錯誤。 – CreeTar

27

在/etc/mysql/my.cnf文件中添加以下行(跳過名稱解析)

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

而且重新啓動mysql服務器

+2

我認爲'skip-locking'現在是'skip-external-locking' –

+1

是的,加上'skip-external-locking'和'skip-name-resolve',你就會有一段糟糕的時間。 –

+2

@OrlandoLeite你是什麼意思? – AldoB

相關問題