• 締切
  • すぐに回答を!

PHPからMySQLに接続することができません。

  • 質問No.6115024
  • 閲覧数1057
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 60% (3/5)

PHPからMySQLに接続することができません。
解決方法をご存じの方は教えていただけないでしょうか。

PHPから、mysql_connect を行った際、以下のエラーが発生してしまいます。
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13)

環境
OS:CentOS 5.3
DB:Mysql 5.0.67(ソースからインストール)
Web:Apache

PHPのソースの一部を以下に記します。

  $db_host = 'localhost';//DB_NAME;
  $db_user = 'user';//DB_USER;
  $db_pass = 'pass';//DB_PASS;

  $db = mysql_connect($db_host,$db_user,$db_pass);

以下の方法も試したのですが、エラーメッセージは変わりませんでした。

  $mysql_connect("localhost:/tmp/mysql.sock","mysql","passwd")

端末のコマンドからMySQLへの接続は成功します。
ホスト名、ユーザー名、パスワードも上記と同一のものです。

  $ /usr/local/mysql/bin/mysql -h localhost -u user -p
  Enter password:pass

以上です。宜しくお願いします。

回答 (全4件)

  • 回答No.4

ベストアンサー率 47% (436/922)

こんにちは。

済みません、もうひとつ・・・。
mysqladmin パスワード --socket=/tmp/mysql.sock version
ってやったら、どうなりますか?
  • 回答No.3

ベストアンサー率 47% (436/922)

こんにちは。

MySQLはどうやって入れたんですかね?
mysql_config --socket
とやったら、なんて表示されますか?
また、
mysqladmin パスワード version
とやったら、
UNIX socket /var/lib/mysql/mysql.sock
のところはなんて表示されますか?

ちなみに私は全部yumですが・・・、
/var/lib/mysql/mysql.sock
と表示されます。

「/etc/my.cnf」の中も、ここを指定しています。
「/etc/php.ini」の設定は空白ですが、この場合、デフォルト(mysql_config)の値を見るようです。
逆に「php.ini」でのソケット指定は不具合が多いとの事で・・・。
  • 回答No.2

ベストアンサー率 47% (436/922)

こんばんは。

実際にmysql.sockが存在する場所は?

my.cnfの[mysqld]が、
socket=/tmp/mysql.sock
になっている?

php.iniの、
mysql.default_socket = ???
これは?

/var/mysqlのパーミッションはどうですか?
PHPが読み書きできない?

yumで入れたら楽だったのに・・・。
補足コメント
croell

お礼率 60% (3/5)

yumでのインストールですが、
今回は既存のシステムと同一の環境が欲しいと客先に言われておりまして、
yumではインストールしないで欲しいと言われてしまいました。

なので、yumでのインストールはできない状態です。
投稿日時:2010/08/18 09:15
お礼コメント
croell

お礼率 60% (3/5)

情報ありがとうございます。
インラインで失礼致します。

>実際にmysql.sockが存在する場所は?
→/tmp/mysql.sock です。

>my.cnfの[mysqld]が、
>socket=/tmp/mysql.sock
>になっている?
→clientもmysqldもなってます。

>php.iniの、
>mysql.default_socket = ???
>これは?
→空欄になっていました。
 以下のように変更しました。
 mysql.default_socket = /tmp/mysql.sock

>/var/mysqlのパーミッションはどうですか?
>PHPが読み書きできない?
→所有者はmysqlユーザーで、グループがrootになっておりました。
 権限はdrwx------となっておりました。
 権限をdrwxrwxrwxへ変更しました。
 グループをmysqlへ変更しました。

上記を変更し、httpdとMySQLを再起動しましたが、
結果は変わりませんでした。

>yumで入れたら楽だったのに・・・。
→先方から細かい指示がありまして。。。
 後で試してみます。
投稿日時:2010/08/17 21:32
  • 回答No.1

ベストアンサー率 50% (1/2)

エラーメッセージをグーグル先生に聞いたところ、参照URLに詳しく書いてありましたので、ご参照してみてください。
お礼コメント
croell

お礼率 60% (3/5)

情報ありがとうございます。

頂いたURLを参照し、以下を確認しました。

1.MySQLサーバーが起動していない
  →確認したところ起動していました。

2.MySQLサーバーで使っているUNIXソケットとクライアントソフトで使っているUNIXソケットのパスが違う
  →usr/local/mysql/var/my.cnf を確認したところ、
   mysqld、clientとで、同一ディレクトリのmysql.sockを参照していました。

3.なんらかの理由でソケットファイルが削除されている
  →2,で参照されているディレクトリから確認したところ、mysql.sockファイルの存在を確認しました。
  内容を確認しようとしたところ、所有者ユーザー、rootユーザー共に、
  viewコマンドで閲覧ができませんでした。([Permission Denied])

未だにPHPからの接続ができていない状態です。
投稿日時:2010/08/17 13:32
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ