mysql_connect
和 mysqli_connect
均显示连接失败,但是用 Navicat 可以连接上数据库,所以判断应该是环境配置问题,找了很多办法都没解决。
最后在知乎上面找到答案了:
我猜题主用的应该是 Apache 吧,如果是的,那原因可能是这个:
CentOS 默认情况下,SELinux 是打开的,在 SELinux 打开的情况下,是不允许连接远程 MySQL 资源的,简单的做法是关闭 SELinux:bashsetenforce 0
这种做法在线上肯定是不推荐的,可以用:
bashsetsebool httpd_can_network_connect_db 1
设置 Apache 允许访问外部 MySQL 资源。
瞬间感动落泪,原来大家都有掉到坑里过。