- 締切済み
PHPからMySQLに接続することができません。
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)
- 専門家の回答
みんなの回答
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 済みません、もうひとつ・・・。 mysqladmin パスワード --socket=/tmp/mysql.sock version ってやったら、どうなりますか?
- taka451213
- ベストアンサー率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」でのソケット指定は不具合が多いとの事で・・・。
- taka451213
- ベストアンサー率47% (436/922)
こんばんは。 実際にmysql.sockが存在する場所は? my.cnfの[mysqld]が、 socket=/tmp/mysql.sock になっている? php.iniの、 mysql.default_socket = ??? これは? /var/mysqlのパーミッションはどうですか? PHPが読み書きできない? yumで入れたら楽だったのに・・・。
- sinful
- ベストアンサー率50% (1/2)
エラーメッセージをグーグル先生に聞いたところ、参照URLに詳しく書いてありましたので、ご参照してみてください。
お礼
情報ありがとうございます。 頂いた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からの接続ができていない状態です。
お礼
情報ありがとうございます。 インラインで失礼致します。 >実際に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で入れたら楽だったのに・・・。 →先方から細かい指示がありまして。。。 後で試してみます。
補足
yumでのインストールですが、 今回は既存のシステムと同一の環境が欲しいと客先に言われておりまして、 yumではインストールしないで欲しいと言われてしまいました。 なので、yumでのインストールはできない状態です。