mysql_connectmysqli_connect 均显示连接失败,但是用 Navicat 可以连接上数据库,所以判断应该是环境配置问题,找了很多办法都没解决。

最后在知乎上面找到答案了:

我猜题主用的应该是 Apache 吧,如果是的,那原因可能是这个:
CentOS 默认情况下,SELinux 是打开的,在 SELinux 打开的情况下,是不允许连接远程 MySQL 资源的,简单的做法是关闭 SELinux:

setenforce 0

这种做法在线上肯定是不推荐的,可以用:

setsebool httpd_can_network_connect_db 1

设置 Apache 允许访问外部 MySQL 资源。

瞬间感动落泪,原来大家都有掉到坑里过。