PHP连接数据库失败-解决方案
问题描述
今天在使用php代码连接数据库的时候发现死活都连接不上,在确认账号密码都没有错误的情况下,几乎找遍了答案都无法解决。
解决方法
通过不断的查阅资料及测试,发现问题在于本机地址localhost和127.0.0.1身上,当我把localhost换成127.0.0.1时发现顺利连接。 通过查阅资料可知二者的区别:
- mysql -h 127.0.0.1 的时候,使用TCP/IP连接, mysql server 认为该连接来自于127.0.0.1或者是”localhost.localdomain”
- mysql -h localhost 的时候,是不使用TCP/IP连接的,而使用Unix socket; 此时,mysql server则认为该client是来自”localhost”
打开文件hosts:C:WINDOWSsystem32driversetchosts)
从系统的hosts文件可以看出localhost 并没有直接被解析为 127.0.0.1 ,而是 DNS 将根据当前连接的协议来自动选择将其解析为 v4 地址还是 v6 地址,此时只需要在hosts文件下添加代码:
127.0.0.1 localhost
最后
在用代码连接数据库的时候,连接数据库失败的原因一般情况都是账号密码错误,所以一定要首先保证账号密码均无误的情况下再去寻找答案,排查问题最后结局问题。此处如果嫌麻烦也可以直接将localhost更改为127.0.0.1即可,毕竟不是什么大问题。