ネットサービスの開発に役立ちそうな話題を中心にお届けします。
F.Ko-Jiの「一秒後は未来」 > MySQL > MySQLとlocalhost
2006年04月20日 00:58
2121日前に投稿

MySQLとlocalhost

  • ... PV
  • このエントリーをはてなブックマークに追加

スポンサード リンク

同じPC上に複数のMySQLサーバを起動。ひとつは通常のmysqldで起動するサーバで、設定ファイルはmy.cnf、ポート番号は3306。もうひとつはmysqld_multiを利用して起動するサーバで、設定ファイルは別物、ポート番号は3307。

PHPプログラムで後者のポート番号3307のほうにmysql_connectしようとしたのですが、シェルからは正常に接続できるのに、ブラウザからは接続できませんでした。PEAR::DBを使っていて、DSNはこんな感じ。

$dsn = "mysql://user:pass@localhost:" . rawurlencode($path_to_sock) . "/dbname";

localhostだからポート番号ではなくてソケットファイルを指定したのですが、うまくいきませんでした。そこでソケットではなくポート番号に変更したところ、今度はブラウザからも接続できたように見えました。しかし、mysql_connectのリファレンスに以下のような注意書きが。

注意: サーバ名に "localhost" や "localhost:port" を指定した場合、MySQL クライアントライブラリはそれをオーバーライドし、 ローカルソケット(Windows では名前つきパイプ)に接続しようとします。 TCP/IP を用いたい場合は、"localhost" のかわりに "127.0.0.1" を用いてください。もし MySQL クライアントライブラリが 間違ったローカルソケットへ接続しようとしている場合、これを修正するには PHP 設定の mysql.default_host string に正しいパスを 指定したうえでサーバ名を空白にしておくべきです。 (mysql_connect)

ということは、localhost:3307って指定してもそれは無視されて、ソケットファイルが使われてしまうということになります。だとすると、このとき使われるソケットは前者のサーバのソケットなのでしょうか、それとも後者のほうでしょうか。前者だとするとそのポート番号は3306であり、期待する結果ではありません。ということを考えるより、注意書きにあるように「127.0.0.1:3307」って指定すればうまくいくのでしょうか。

MySQLとlocalhostの関係は、奥が深そうです。

スポンサード リンク

Written by
Meity.jp - Twitterなかまでプライベートなオフ会を開催したいなら


トラックバック

このエントリーのトラックバックURL:

この一覧は、次のエントリーを参照しています: MySQLとlocalhost:

» MySQLのGRANT from F.Ko-Jiの「一秒後は未来」
昨日からMySQLに接続できねーぞと困っていた件。いろいろやってみて、結局 GR... [詳しくはこちら]

コメント

フッキーのこれ検索に引っかかった。

MySQL

English version

前のエントリー: « Amazonの支払いをコンビニとかATMとかネットバンキングで
次のエントリー: MySQLのGRANT »

コピペにご利用ください。

タイトル:

URL:

リンク用HTMLタグ: