【php】MySQLに接続するときにエラー発生
問題
mysql_connect()をすると次のようなエラー(警告)が発生し、接続できない。
Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) ......


解決策
ソースからインストールしたphpとRPMでインストールしたMySQLを使うと発生する。
お互いに想定した場所(デフォルトの場所)にソケットがないのが問題。
以下のどちらかの設定をおこなう。両方設定するとまた入れ違いになるのでどちらかを設定する。
php.iniにMySQLのソケットを設定して、RPMのMySQLに合わせる場合
mysql.default_socket="/var/lib/mysql/mysql.sock" mysqli.default_socket="/var/lib/mysql/mysql.sock" pdo_mysql.default_socket="/var/lib/mysql/mysql.sock"
逆に、my.cnf にソケットを設定して、ソースからインストールしたphpに合わせる場合
[client] #password = your_password port = 3306 #socket = /var/lib/mysql/mysql.sock #これを変更 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 #socket = /var/lib/mysql/mysql.sock #これを変更 socket = /tmp/mysql.sock
どちらかが相手に合わせる。
コメント