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连接。