以下是我的问题要点:我有一个 Web 应用程序,当数据库的主机设置为 localhost 时,该应用程序无法连接,但如果我使用地址 127.0.0.1,则可以连接。连接时 PHP 给出的错误是:“SQLSTATE[HY000][2002] 权限被拒绝”。我知道套接字在那里,因为当我停止服务时,我得到“SQ:STATE[HY000][2002] 没有这样的文件或目录。”
在终端中输入“ls -als /tmp”后,我看到mysql.sock的权限为777。
知道为什么我无法连接到插座吗?
答案1
您的表是否mysql.user
有数据库用户的主机条目?如果没有,那就是MySQL 错误localhost
的原因。Permission denied
答案2
在 CentOS 上,罪魁祸首是 SELinux,您可以通过运行以下命令来确认
getsebool -a | grep httpd
检查 httpd_can_network_connect_db 是否已关闭。如果已关闭,您可以使用命令启用它
setsebool -P httpd_can_network_connect_db 1
(-P 标志使更改永久生效,因此设置在重启后仍然有效。)