人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ソースからMySQL4.1を入れたのですが、
PHPのmysql_connectで繋がらなくて困っています。
解決方法を教えてください。
現象は下記です。

【現象】
◆テストスクリプト
test.php
>>
<?php
$db_param = array(
"HOST" => "localhost",
"USER" => "username",
"DBNAME" => "dbname",
"PASSWORD" => "passwd",
);


mysql_connect($db_param['HOST'] , $db_param['USER'], $db_param['PASSWORD'])
or die("Could not connect MySQL server");
mysql_select_db($db_param['DBNAME'])
or die("Could not select database");
?>
<<

◆エラー内容
http://example.com/test.php
で、
Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) in /path/test.php on line 11
Could not connect MySQL server

◆補足
mysql -u root -p
などでは繋がります。

◆環境
CentOS4
MySQL4.1.19
↓を参考に入れました。sennaを組み込んでいます。
http://qwik.jp/senna/install.html
PHP 5.1.2
Apache2

●質問者: kunitz
●カテゴリ:コンピュータ
✍キーワード:CONNECT localhost MySQL ON password
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● inosisibeyan
●23ポイント

mysql.default_socket = /var/lib/mysql/mysql.sock

という実際に使用するソケットのパス指定の一行が、php.iniに入っていれば、ソースからmakeした場合でも使えます。

参考までに

変更した場合の元のファイルが/etc/php.ini.rpmsaveなどのファイル名になってデフォルトではあるようですので、ご自分の環境で見つけて見てください。元の状態というのもかなり参考になるものです。

http://dev.mysql.com/doc/refman/4.1/en/problems-with-mysql-sock....

mysqlの仕様で、rpmとソースでそれぞれインストールのパスが変わるのが、今回の不具合の原因と考えられます。

◎質問者からの返答

ありがとうございます!

mysql.default_socket = /tmp/mysql.sock

にして、phpinfoでも値が変更されているのを確認したのですが、現象は変わらずです。

phpの--with-mysql=/usrのパスが、

/usr/local/bin/mysql

が正だったので、とりあえずそこを直してコンパイル中です。。。


2 ● tadashi0805
●23ポイント

PHPから接続するユーザとデータベースのgrant設定はありますでしょうか?

PHPから接続するのはlocalhostで、ソケット接続になりますので、grant設定もusername@'%'だけでなく、別途username@localhostが必要になります。

http://www.rfs.jp/server/mysql/02/02.html

select * from mysql.user where user='username';

のクエリで確認してください。

◎質問者からの返答

ありがとうございます!

username@localhos

存在してるんですよ?・・・


3 ●
●22ポイント

以下のページはすでに確認済みでしょうか。

上記のページでは

など、いくつかの典型的な問題について説明されています。

もし未確認であれば、一通り確認してみてはいかがでしょうか。


4 ● kai10
●22ポイント

あくまで予想ですが、mysql.soで参照している、mysqlのライブラリのパスがあってないためではないでしょうか。

% ldd /usr/lib/php5/lib/php/extensions/.../mysql.so

を実行したときに、

libmysqlclient.so.15 => not found

というように、「not found」があると、ライブラリが参照できていない状態です。

その場合、php の再コンパイルが必要になります。

あるいは、libmysqlclient.so.15 が、MySQLをインストールしたディレクトリの lib 配下にあると思うので、/usr/lib あたりにシンボリックリンクを作成すれば、何とかなるかもしれません。

http://www.mysql.gr.jp/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ