Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用alias for localhost的Mysql_Php_Mysql_Pdo - Fatal编程技术网

Php 使用alias for localhost的Mysql

Php 使用alias for localhost的Mysql,php,mysql,pdo,Php,Mysql,Pdo,我试图“伪造”我们的开发服务器,使其认为我拥有的三台生产数据库服务器都在本地主机上。我已将以下内容设置为主机 127.0.0.1 localhost dev1 dev2 dev3 我在Mysql中设置了一个用户,使用localhost作为主机,一切正常。如果更改为dev1用户并重新启动权限,则会出现以下错误: 致命错误:未捕获的异常“PDOException”带有消息 'SQLSTATE[HY000][2003]无法连接到'dev1'(4)上的MySQL服务器' 在/var/www/

我试图“伪造”我们的开发服务器,使其认为我拥有的三台生产数据库服务器都在本地主机上。我已将以下内容设置为主机

127.0.0.1      localhost dev1 dev2 dev3
我在Mysql中设置了一个用户,使用localhost作为主机,一切正常。如果更改为dev1用户并重新启动权限,则会出现以下错误:

致命错误:未捕获的异常“PDOException”带有消息 'SQLSTATE[HY000][2003]无法连接到'dev1'(4)上的MySQL服务器' 在/var/www/config/lib.php:11堆栈跟踪:#0 /var/www/config/lib.php(11):PDO->\uu构造('mysql:host=dev1', '用户','密码',数组)#1

完全相同的连接与localhost相同,而与dev1不同。为什么会这样?我正在运行Mysql 5.7。我也尝试过只使用
127.0.0.1
,但也没有效果

在你标记我为复制品之前,我检查过了

这个解决方案不适用于我,因为我知道我接受来自其他开发服务器的
端口3306
上的连接。但是,是否可能存在与非本地主机主机名和默认端口使用相关的类似问题?我必须在防火墙中打开本地主机的端口吗

我尝试这样做的主要原因是,我的代码不必从开发更改为生产。我有三台DB服务器,但在localhost for dev上都使用相同的服务器


谢谢你的洞察力

这个问题在另一个答案中得到了很好的解释:
localhost
是客户端的一个特殊关键字,它触发的行为与其他任何东西完全不同。您所做的相当于连接到
127.0.0.1
,正如您所说,这不起作用。在您的MySQL服务器配置中使用它。可能重复的不它不是重复的,该用户没有打开MySQL进行外部访问。我愿意。他的解决方案是启用mysql进行外部访问,但这并不能解决我的问题。与其在阅读和重新格式化之前如此关注副本,不如试着回答这个问题?@deceze-我回答了。我尝试运行127.0.0.1的所有功能,包括设置mysql用户主机。还打开了端口3306的防火墙。我想知道,即使在本地机器上,也最好只使用外部IP地址进行DB连接。另一个答案很好地解释了这个问题:
localhost
是客户端的一个特殊关键字,它触发的行为与其他任何东西完全不同。您所做的相当于连接到
127.0.0.1
,正如您所说,这不起作用。在您的MySQL服务器配置中使用它。可能重复的不它不是重复的,该用户没有打开MySQL进行外部访问。我愿意。他的解决方案是启用mysql进行外部访问,但这并不能解决我的问题。与其在阅读和重新格式化之前如此关注副本,不如试着回答这个问题?@deceze-我回答了。我尝试运行127.0.0.1的所有功能,包括设置mysql用户主机。还打开了端口3306的防火墙。我想知道,即使在本地机器上,也最好只使用外部IP地址进行DB连接。