web-dev-qa-db-ja.com

ウェブサーバー:chrooted PHP mysqlに到達しようとすると、mysql.sockエラーが発生する

こんにちは、私はNginx + PHP5-FPMでUbuntuウェブサーバーを設定しました。開発者がテストアプリケーションを開発できる場所から、開発者を投げ込むchroot環境(jailkitを使用)を作成しました。

Chroot刑務所:/ home/jail

NginxとPHP5-FPMはchrootの外部で実行されますが、chrootされた環境内のWebサイトで機能するように構成されています。

これまでのところ、NginxとPHP5-FPMは、以下を除いて問題なくファイルを提供しています。MySQLに接続しようとすると、次のエラーが発生します。SQLSTATE [HY000] [2002]ローカルMySQLに接続できませんソケットを介したサーバー '/var/run/mysqld/mysqld.sock'

今、私は問題がchroot環境の外でmysqld.sockを参照するchrootされていないphp.ini(実際には現在MySQLのデフォルト設定を使用しています)が原因であると私は信じています。

私の質問は、ループバックなどを介してMySQLにアクセスするようにPHPを構成するにはどうすればよいですか?(Googleの結果の提案として見つかりましたが、指示はありません)

または、他の明らかな設定がない場合は、お知らせください。ハードリンクを作成するオプションがある場合(mysqlが再起動されても利用可能なままです)、それも便利です。

8
Jon L.

私は自分の問題を解決しました。 Ubuntuは/ var/runをtmpfsに格納するため、Jailkitはmysqld.sockへのハードリンク参照を作成できませんでした。これはシステムからは別のパーティションのように見えます(ハードリンク機能が壊れています)。代わりに、次のように/ var/run/mysqldをjailにマウントしています:mount --bind /var/run/mysqld /home/jail/var/run/mysqld/

9
Jon L.

Host127.0.0.1として使用するのはどうですか? TCP接続はソケットを書き込みません(unixのlocalhost値とは異なります)を使用します。

4
pevik

My.cnfファイルのsocketオプションを使用してMySQLのソケットを制御できます。

socket = /home/jail/var/run/mysqld/mysqld.sock
0
hobodave