问题详情
配置一个站点,在数据库配置时填写localhost,无法链接数据库,显示账号密码错误,然后使用同样的账户密码在命令行登陆没问题。
故障解答
为了理清php链接数据库的相关知识,在网上查找了很多资料,最终原因如下:
当主机填写为localhost时mysql会采用 unix domain socket连接
当主机填写为127.0.0.1时mysql会采用tcp方式连接
这是linux套接字网络的特性,win平台不会有这个问题
解决方法
在my.cnf
的[mysql]
区段里添加
复制代码代码如下:
protocol=tcp
保存重启MySQL,问题解决!
情景二:
分析:这是典型的socket没有正确设置的情况。
连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127.0.0.1,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127.0.0.1也是分开设置的。当设置为127.0.0.1时,系统通过TCP/IP方式连接数据库;当设置为