networking服务器:chrooted PHP在尝试到达mysql时会给出mysql.sock错误

嗨,大家好,我已经用Nginx + PHP5-FPMconfiguration了Ubuntunetworking服务器。 我创build了一个chroot环境(使用jailkit),让我的开发人员可以开发他们的testing应用程序。

Chroot监狱:/ home / jail

Nginx和PHP5-FPM在chroot之外运行,但被configuration为与chroot环境中的网站一起运行。

到目前为止,Nginx和PHP5-FPM提供的文件没有问题,除了以下内容:当试图连接到MySQL,我们收到此错误: SQLSTATE [HY000] [2002]无法通过套接字连接到本地MySQL服务器' /var/run/mysqld/mysqld.sock”

现在,我认为这个问题是由于chroot环境之外的非chrooted php.ini引用了mysqld.sock(实际上它使用的是MySQL默认设置)。

我的问题是,我如何configurationPHP通过回送或类似访问MySQL? (发现作为一个谷歌结果的build议,但没有任何指示)

或者如果我错过了其他一些明显的设置,让我知道。 如果有一个选项可以创build一个硬链接(即使重启mysql也可以使用),那也是很方便的。

我解决了我自己的问题。 Jailkit无法创build到mysqld.sock的硬链接引用,因为Ubuntu将tmpfs中的/ var /运行在系统中,这看起来像是一个单独的分区(这会破坏硬链接function)。 现在,我正在将jail挂载到/ var / run / mysqld中,如下所示: mount --bind /var/run/mysqld /home/jail/var/run/mysqld/

如何使用host127.0.0.1 ? 它使用不写套接字的TCP连接(与unix上的localhost值不同)。

您可以通过my.cnf文件中的套接字选项来控制MySQL套接字。

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

使用--bind来重新--bind chroot看起来是一个可行的build议。 但是,使用TCP套接字(127.0.0.1)连接到MySQL的恕我直言,似乎更清洁,更安全,不太可能出错。

我说的原因是,各种来源,包括http://blog.dispatched.ch/postfix-and-mysql-debian/和https://stackoverflow.com/questions/11389214/postfix-cant-connect-with-mysql -table-when-using-unix-socket-postmap-succeedsbuild议添加到fstab:

  /var/run/mysqld /home/jail/var/run/mysqld bind defaults,bind 0 0 

要小心:Debian至less清除/ var /在重新启动时运行,所以挂载将在启动时失败,您的服务也将失败。 当然,你可以使用:

  /var/run /home/jail/var/run bind defaults,bind 0 0