【问题标题】:PHP can't connect to my chrooted MySQL socket?PHP 无法连接到我的 chrooted MySQL 套接字?
【发布时间】: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),因此它可以访问系统上的所有文件(当然就权限而言)。

标签: php mysql centos chroot


【解决方案1】:

Apache 是否有权遍历/读取该路径中的所有目录?仅仅因为您在命令行中以 root 身份执行某些操作,并不意味着您会傻傻地蹲在 Apache 上。那是完全不同的用户 ID 和不同的环境。

【讨论】:

  • 是的,这是我检查的第一件事。我刚刚也找到了答案……SELinux 拒绝了所有请求。
猜你喜欢
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
相关资源
最近更新 更多