2012-03-10 18 views
1

Iは、Windows/IIS 7.5をして、これは何が起こるかにPHP(ワードプレス)からMySQLへの接続しようとしている:なぜ "localhost"はMySQLホストとして動作しませんが、 "MyPCName"は動作しますか?

define('DB_HOST', 'DevPC');  // -> works 
define('DB_HOST', 'localhost'); // -> connection error 

奇妙なだけの作品localhost別のマシン(Windows Serverの+ IIS 7.5)、上のことです良い。これを引き起こす原因は何ですか?いくつかのPHP設定? MySQLの設定?

+0

'localhost'はTCP/IPではなくドメインソケットを使用することを覚えておいてください。 TCP/IPを強制するには '127.0.0.1'を使います。これは観測された動作を変更し、明示的なループバックアドレスを試すことで問題を絞り込むことができます。 –

答えて

2

接続からのエラー出力を教えてください。ユーザーアクセスの問題ではないと確信していますか? mysqlに接続する場合、[email protected][email protected]と同じではないことに注意してください。両方のホスト名が同じIPに変換されたとしても。

+0

素晴らしい、それでした。私は "%"をホストマッチングルールとして使用していましたが、これはどのホストからでもこのユーザーを許可しますが、明らかに 'localhost'からは許可されませんでした。 – Borek

3

UNIXでは、MySQLプログラムは、ホスト名localhostを、他のネットワークベースのプログラムと比較して期待どおりに扱いません。 localhostへの接続の場合、MySQLプログラムはUnixソケットファイルを使用してローカルサーバに接続しようとします。これは、--portまたは-Pオプションを指定してポート番号を指定しても発生します。

localhostの代わりに127.0.0.1を使用してください。 Windowsで

+0

申し訳ありませんが、これはWindows上にあるはずです。同じ回答が適用されますか? – Borek

+0

私は 'MyPCName'を '127.0.0.1'に変更しようとしましたが、接続エラーが発生します。 – Borek

+0

@Borek:引用文はMySQLのマニュアルから来たもので、WindowsではないUNIXについて話しているので、いいえと言います。 Windowsで接続に問題がある場合は、ファイアウォールの設定を確認してください。フィードバックをより簡単に取得できるので、コマンドラインクライアントで最初に試してみることをお勧めします。接続パラメータを変更し、動作するまでトラブルシューティングを行います。http://dev.mysql.com/doc/refman/5.5/en/mysql.html – hakre

0

あなたはライン

127.0.0.1 

localhostのがあるかどうかを知るために

c:\windows\system32\drivers\etc\hosts 

を確認することができます。

/etc/resolv.conf in linux 
+0

両方のマシンで、127.0.0.1のルールがコメントアウトされています。 "ローカルホスト名解決はDNS自体の中で処理されます"。だからこそ私は、 'localhost'があるマシンで動作し、別のマシンで動作しないことが奇妙に感じられるのです。 – Borek

+0

あなたのDNSシステムが間違っているかもしれません.. localhostにpingを実行して、あなたの結果を確認してください。それは127.0.0.1を返してください – nax

関連する問題