【发布时间】:2011-12-07 21:01:59
【问题描述】:
所以我在 CentOS 上设置了一个 MySQL chroot。 MySQL 被有效地限制在 /opt/chroot/mysql/ 中,我已经修改了 /etc/init.d/mysqld 文件,以便一切运行正常。我可以(以 root 身份)通过发出以下命令连接到套接字:
mysql -S /opt/chroot/mysql/var/lib/mysql/mysql.sock
目前,为简单起见,MySQL root 用户没有密码。
但是,由于某种原因,PHP(在 Apache 中运行)无法连接到同一个套接字。我尝试在 php.ini 中更新 MySQL 默认套接字变量,以及在建立连接时引用完整的套接字路径,但我总是得到同样的错误:
无法通过套接字'/opt/chroot/mysql/var/lib/mysql/mysql.sock'连接到本地MySQL服务器(13)
有什么想法吗?
更新:自己找到了解决方案。 SELinux 已启用并阻止 Apache 的所有连接。
【问题讨论】:
-
这个问题在serverfault.com 投票结束时更重要。
-
如果你是 chroot-ed,套接字路径不应该是
/mysql/var/lib/mysql/mysql.sock(有或没有/mysql前缀,不确定你的设置)吗? -
MySQL 已被 chroot,位于 /opt/chroot/mysql/ 目录中。 Apache 没有 chrooted (atm),因此它可以访问系统上的所有文件(当然就权限而言)。