PDO不使用Port

The*_*Rat 9 php mysql pdo

我正在尝试使用PDO连接到外部数据库.

$dbh = new PDO('mysql:host=hotsname;port=3309;dbname=dbname', 'root', 'root');
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于我拥有的特定服务器.

我想也许只允许某个主机,但我检查了mysql规则,并在我个人的服务器上尝试了这个代码并且连接正常.

所以我知道代码工作,并且他们不在我身边,并且防火墙正在接受对端口3309的请求并将其传递到端口3306上的正确服务器.

所以问题完全在一台服务器上.作为测试,我以为我打开端口3306来测试代码而不指定端口.

$dbh = new PDO('mysql:host=hotsname;dbname=dbname', 'root', 'root');
Run Code Online (Sandbox Code Playgroud)

这很直接.

所以我的问题是,为什么在添加端口时这会导致它无法连接到数据库.只有这个特定的服务器才有这个问题.

非常感谢您的时间.

更新

给出的错误只是"无法连接到xxx.xxx.xxx.xxx上的mysql服务器".

我现在稍微进一步了.代码现在正在工作,前提是我有一个防火墙规则允许使用3306在3306上传入服务器.所以,即使我已经指定了一个端口,它似乎忽略了这一点,并迫使它超出3306.

Sla*_*ser 11

您可能使用localhost主机名.将其切换为相应127.0.0.1应解决端口无知问题.

  • 这解决了我的问题(通过 ssh 进行代理连接)。关于为什么本地主机忽略端口而 127.0.0.1 行为“正确”的任何见解? (3认同)

The*_*Rat 3

问题最终还是出在楼主的身上。无论代码中指定的端口如何,所有流量都在 3306 上强制输出。