为啥一旦我将主机从“localhost”更新为“mydomain.com”,Wordpress 会突然连接到 MySQL 数据库服务器?
Posted
技术标签:
【中文标题】为啥一旦我将主机从“localhost”更新为“mydomain.com”,Wordpress 会突然连接到 MySQL 数据库服务器?【英文标题】:Why can Wordpress suddenly connect to the MySQL database server once I update the host from "localhost" to "mydomain.com"?为什么一旦我将主机从“localhost”更新为“mydomain.com”,Wordpress 会突然连接到 MySQL 数据库服务器? 【发布时间】:2010-10-06 08:07:19 【问题描述】:这是“无法连接”问题的特定变体。就我而言,我刚刚在我的 httpd.conf 中设置了两个虚拟主机,监听端口 80。声明如下:
名称虚拟主机 *:80 服务器名称 site1.dev DocumentRoot /www/site1 虚拟主机> 服务器名称 site2.dev DocumentRoot /www/site2 虚拟主机>据我了解,http://localhost 和 http://site1.dev 现在都映射到“/www/site1/”,当然http://site2.dev 映射到它的目录。
这一切都很好。我有一个我正在使用的 Wordpress 安装,目前在 site2.dev 域下。我正在尝试将其配置为与我刚刚设置的 mysql 数据库一起使用,该数据库具有用于“localhost”的帐户“mysql”。因此,在 Wordpress 的配置中,我将该用户名和主机名输入为“localhost”。这不行,所以玩了一会儿之后,我尝试将主机名更改为“site2.dev”,然后它就可以正常工作了。
这里发生了什么?我知道我的虚拟主机已设置好,但我认为它们正在侦听端口 80,而不是端口 3306,这是 MySQL 使用的,那么这有什么关系呢?我相信有一个简单的解释,所以希望有人能启发我。
【问题讨论】:
【参考方案1】:一个可能的嫌疑人是您的 MySQL 访问控制配置。 yourhost.foo 和 localhost 是完全不同的,就它而言,它总是在咬人。如果 WP 的 MySQL 用户表条目存在且主机键控为 yourhost.foo
但不是 localhost
,那么这就是问题所在。
【讨论】:
你能详细说明一下吗?您所说的 MySQL 访问控制配置到底是什么意思,为什么这两个域在它方面有所不同? 我认为 WP 表中没有任何条目引用一个域而不是另一个域,因为在我开始工作之前我没有更改实时站点备份中的任何内容,但这是一个好点。 这与 WP 中的任何内容无关。 MySQL 有一个名为 mysql 的数据库,其中包含确定用户可以连接到它以及他们可以做什么的表。整个 MySQL GRANT PRIVILEGE 语法就是这样;您可能应该查看它,并查看“mysqldump mysql”的输出。 +1 通常就是这样。最好通过 localhost 连接而不是 domain.com,因为这样 MySQL 可以使用更快的本地 unix 套接字而不是 IP 套接字,因此请尝试为 localhost 获取 GRANT。 抱歉,再澄清一点。我有一个用户是“mysql”@“localhost”,这是 WP 正在使用的帐户。该帐户只能通过“localhost”主机访问。我认为这是对的。为什么 WP 配置不能与主机名“localhost”一起使用,而只能与“mydomain.com”一起使用?【参考方案2】:您是否在设置虚拟主机时编辑了 /etc/hosts 文件?您可能不小心删除了“localhost”条目。
【讨论】:
在此阶段未更改主机文件。它有两行将 localhost 和 site2.dev 映射到 127.0.0.1。【参考方案3】:因为您的数据库没有在环回接口 (localhost) 上侦听。
【讨论】:
以上是关于为啥一旦我将主机从“localhost”更新为“mydomain.com”,Wordpress 会突然连接到 MySQL 数据库服务器?的主要内容,如果未能解决你的问题,请参考以下文章
apache的默认域名localhost和ip 127.0.0.1为啥无法修改?
为啥从 localhost 向 localhost 发出请求时会启动同源策略?
#1130 - 主机‘localhost’不允许连接到这个 MySQL 服务器