【问题标题】:MySQL server denies connections from local PHP script, but not from local MySQL clientMySQL 服务器拒绝来自本地 PHP 脚本的连接,但不拒绝来自本地 MySQL 客户端的连接
【发布时间】:2016-06-24 15:19:25
【问题描述】:

这个问题让我有点措手不及。我刚刚设置了这个 LAMP 服务器,一切似乎都运行良好,直到我尝试运行一些与 MySQL 服务器通信的 PHP。

“读取初始通信数据包”时与 MySQL 服务器的连接丢失,系统错误:0

很明显,由于某种原因,MySQL 服务器不会与 PHP 通信。我继续使用 MySQL 客户端连接到它,并且登录和执行查询都没有问题。我查看了 MySQL 的 systemctl,发现它出于某种原因故意拒绝连接。

vultr.guest systemd[1]: Started MySQL Community Server.
vultr.guest mysqld[17740]: warning: cannot open /etc/hosts.allow: Permission denied
vultr.guest mysqld[17740]: warning: cannot open /etc/hosts.deny: Permission denied
vultr.guest mysqld[17740]: refused connect from ::1

没错。所以我检查了主机文件并将它们的权限设置为 774,这实际上不应该造成任何问题。为了科学起见,我将许可增加到 777,但这似乎没有任何区别。在这一点上,我有点停滞不前,因为我找不到任何其他线索来说明可能是什么问题。目前大部分配置都是 PHP 和 MySQL 的默认配置,所以老实说,我想不出它们的配置会产生任何潜在的差异。有人愿意分享他们对此的看法吗?

【问题讨论】:

  • 你的PHP脚本的连接配置是什么?
  • 你有什么操作系统??确切地 ?你能显示 ls -l /etc/hosts.* 的输出吗 你是否启用了 selinux 并处于强制模式? /etc 目录条目本身有什么权限? /var/log/messages 中是否记录了与该问题相关的任何消息?
  • 这只是 Ubuntu 服务器 15.10 的标准安装。主机文件肯定都在那里并且正确。 -rwxrwxr-- 1 root root 92 Feb 20 2014 /etc/host.conf -rwxrwxr-- 1 root root 12 Mar 9 11:18 /etc/hostname -rwxrwxr-- 1 root root 210 Nov 24 22:16 /etc/ hosts -rwxrwxrwx 1 root root 0 3 月 9 日 19:24 /etc/hosts.allow -rwxrwxrwx 1 root root 0 3 月 9 日 19:24 /etc/hosts.deny 我从未安装过 selinux,所以除非它默认出现在Ubuntu 服务器。 /etc 是 774。/var/log/mysql/error.log 对此一无所知。这条评论的格式很糟糕,抱歉。

标签: php mysql ubuntu lamp


【解决方案1】:

从您的日志看来,连接已建立但被 mysqld 拒绝,因此这可能既不是端口问题也不是防火墙相关的问题。

据我所知,如果您使用命令行客户端连接到本地主机上的服务器,客户端总是通过套接字文件建立连接。另一方面,PHP 可能使用 TCP/IP。

您的 mysqld 配置中可能存在错误(或某些特殊的安全措施),导致您的 mysqld 侦听端口但拒绝所有 TCP/IP 连接。

【讨论】:

  • 我不认为这是问题
  • 我已经仔细检查了 /etc/mysql 中的所有 mysql 配置文件,并没有发现任何不完全默认的内容。我特别困惑为什么服务器抱怨它无权访问主机文件,因为它们应该是 100% 可访问的。据我所知,它拒绝连接,因为它无法访问主机规则作为一种故障保护。但不应该有任何理由不能访问它们。
猜你喜欢
  • 2011-12-12
  • 2015-03-29
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2013-10-13
  • 2012-06-25
  • 2016-01-27
相关资源
最近更新 更多