多数据库下完美解决MySQL通过localhost⽆法连接数据库的问
题
问题:⼀台服务器的PHP程序通过localhost地址⽆法连接数据库,但是如果设置为127.0.0.1则可以正常连接,连接其他数据库服务器也正常。MySQL的权限设置正确,且通过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⽅式连接数据库;当设置为localhost时,系统通过socket⽅式连接数据库。
mysql无法连接10061解决:⾸先要看本机MySQL的socket套接字⽂件在哪⾥,查看命令是:
1mysqld --verbose --help | grep socket
输出结果显⽰套接字⽂件的位置,⽐如:这台服务器显⽰的是
1socket /var/run/mysqld/mysqld.sock
然后修改php的配置⽂件php.ini与之对应起来就好了。
到这⼀项:
1mysql.default_socket =
⼀般来说这⼀项都是空的,改成:
1mysql.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket , mysqli.default_socket都要改
这⾥应写上⼀步查询到的⽂件,根据你的情况设置。⾄此php配置就修改好了,如果是CLI(命令⾏)⽅式或者CGI⽅式的话,⽴即就⽣效,如果是FASTCGI⽅式,需要重启⼀下fastcgi进程。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论