PHP Warning: mysql_connect(): Can’t connect to local MySQL server through socket ’/tmp/mysql.sock’ (13)
というエラーが発生してしまいます。
Linux(Fedora Core3)上で直接実行した場合はちゃんと実行できます。他に何か設定が必要なのでしょうか?
php.iniのmysql.default_socketや
my.cnfの[mysqld]socket=などを
変更してMYSQL・Apacheの再起動をかけたりしているのですがどうもうまくいきません。
何か心当たりのある方はよろしくお願いします。
プログラムは下の通りです。
<html>
<?php
$db = mysql_connect(”localhost”, ”user”,”pass”);
mysql_select_db(”mysql”,$db);
$result = mysql_query(”SELECT Host FROM user”,$db);
printf(”First Name: %s
¥n”, mysql_result($result,0,”Host”));
?>
</html>
http://www.hi-ho.ne.jp/tsumiki/book_sup2.html
mysql_connect(”localhost:/var/lib/mysql/mysql.sock”,”mysql”,”passwd”)){
としてみてはどうでしょうか。
先ほどのものです。localhostだけではなく、ソケットファイルの場所を明示する方法ですね。パスは環境にあわせてみてください。
ソケットファイルの場所を明示することでコマンド上での実行は正常に行えたのですが、Webでアクセス使用とするとエラーが表示されてしまいます・・・。
http://www.hostgeekz.com/docs/mysql/japanese/manual.ja_Problems....
MySQL バージョン 5.0.3-alpha リファレンスマニュアル - A 問題と一般的なエラー
/tmp/mysql.sock ファイルに、web server のユーザの権限でアクセスできないのが原因です。
(13は Permission denied)
ありがとうございます。
私も何となく権限が問題のような気はするのですが、mysql.sockのパーミッションは現在777です。
Linuxに関してなにか基本的な知識が欠けているようでしたらご指摘ください。
$db = mysql_connect(”localhost”, ”user”,”pass”);
phpを実行するのはlocalhostなのでしょうか?もし違うのであれば、ホストにサーバー名を入れてみてもだめでしょうか?
違ってたらすいません。
ありがとうございます。
できましたー。localhostのかわりにipアドレスを入力したところ、user@www.my.adminみたいなエラーが表示されたので、さてはと思いhostsを修正してみました。
するとWebでも無事表示されました。
悩み抜いた甲斐がありました。みなさん、ほんとにありがとうございます。
SELinuxのポリシー管理は有効になっているでしょうか?
URLはRHEL4についての情報ですが、
「Apacheからmysqlへのアクセス可能性に関するバグが修正されました。」
との記述があります。
FC3の該当ページは探せなかったのですが、selinux-policy-targetedパッケージは最新になってるでしょうか?
selinuxを止めてみるのが手っ取り早い原因の切り分けになるかもしれません。
ありがとうございます。
なるほどー。そんな障害が報告されているのですね。
私の方は初歩的なミスでしたが、今後注意してみます。
localhost では接続出来ませんでしたが、127.0.0.1 に変更する事で接続が出来た事例があります(cygwin/C言語)。host の欄を 127.0.0.1 に書き換えて試してみてはいかがでしょうか。
ありがとうございます。
今回もその例で解決しました。
お返事が遅くなってしまい、申し訳ありません。
ありがとうございます。
これも試してみましたが、だめでした。
現在、mysql.sockは/tmp/下に配置しております。