2011-07-12 6 views
8

仮想マシンからドメイン内のデータベースに接続しようとしています。 これは、XP上で動作しますが、何とかWin7の上で動作して終了しません: 「OperationalError:(1042年は、 『あなたのアドレスのホスト名を取得できません』)」MySQLdbをPythonで使用する場合、skip-name-resolveオプションの使い方は?

は今、私は無効にファイアウォールやものを試してみましたが、ということとにかく問題ではありません。 私はDNS解決を必要としません。すべての処理が遅くなるだけです。 "skip-name-resolve"オプションを使いたいのですが、MySQLdbをPythonで使用する場合、 またはmy.cnfはありません。どうすればこのオプションを使用できますか?あなたの助けのための

おかげ -Alex

答えて

1

これは、サーバー上のMySQLの設定ファイルで設定する必要がありますオプションです。 MySQLdbなどのクライアントAPIでは設定できません。これは潜在的なセキュリティの影響があるためです。

つまり、特定のホスト名からのアクセスを拒否したいことがあります。 skip-name-resolveを有効にすると、これは機能しません。 (確かに、ホスト名によるアクセス制御は、とにかく、おそらく最高のアイデアではありません。)

+0

私はIPを使用していますが、これをホスト名で表してもエラーが発生します。 しかし、MySQLdbはクライアントAPIよりもPython用のサーバです。私はこれらの設定をどこで行うことができるか知っていますか?例えばPythonパッケージにはMySQLサービスはありません。 – 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 

そして、

+2

'skip-locking'が' skip-external-locking'になったと思います –

+1

はい、 'skip-external-locking'と' skip-name-resolve'を追加すると時間がかかります。 –

+2

@OlandlandLeiteどういう意味ですか? – AldoB

関連する問題