教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL localhost无法连接数据库解决办法

MySQL localhost无法连接数据库解决办法

发布时间:2023-05-02   编辑:jiaochengji.com
教程集为您提供MySQL localhost无法连接数据库解决办法等资源,欢迎您收藏本站,我们将为您提供最新的MySQL localhost无法连接数据库解决办法资源

locahost无法连接mysql数据库。

问题:一台服务器的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的socket套接字文件在哪里,查看命令是:

mysqld --verbose --help | grep socket输出结果显示套接字文件的位置,比如:这台服务器显示的是

socket         /var/run/mysqld/mysqld.sock


然后修改php的配置文件php.ini与之对应起来就好了。

找到这一项:

mysql.default_socket =


一般来说这一项都是空的,改成:

mysql.default_socket = /var/run/mysqld/mysqld.sock

这里应写上一步查询到的文件,根据你的情况设置。至此php配置就修改好了,如果是CLI(命令行)方式或者CGI方式的话,立即就生效,如果是FASTCGI方式,需要重启一下fastcgi进程。


还有一种情况是只能连接127.0.0.1不能连接localhost解决办法

1、根据出错的提示信息“Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '127.0.0.1'”  使用google搜索mysql_connect 有人说是可能mysql_connect这个函数被禁用了,使用其它的连接,测试过不行。

2、使用google搜索mysql能用localhost连接,不能使用127.0.0.1连接,结果大部分人的解决办法是:

修改my.cnf文件,去掉skip_networking,bind_address=127.0.0.1,重启mysql 故障依旧。

 

权限问题,grant all privileges on *.* to 'root'@'127.0.0.1' identified by '密码';   然后flush privileges;  故障依旧。

 

修改/etc/hosts文件,添加127.0.0.1  localhost 项,故障依旧。

3、查看apache错误日志,发现只记录了文件不存在之类的日志信息,未发现和访问mysql数据连接文件相关的项目。

4、查看mysql的日志,未发现相关的连接项目。

5、最后我想起来要查看一下系统日志/var/log/messages 信息太多,清理之:  echo "" > /val/log/messages 然后访问 数据连接测试文件。发现了如下信息:

 代码如下

Nov 30 10:18:49 localhost setroubleshoot: SELinux 正在阻止http 守护进程连接到网络端口3306 For complete SELinux messages. run sealert -l a214e214-c710-4c84-9eb

2-12764f4b27de

结果就很明显了,是selinux闯的祸,关闭selinux测试一下“/usr/sbin/setenforce 0 立刻关闭SELINUX  ”  数据库连接一切正常。

您可能感兴趣的文章:
MySQL不能通过localhost或127.0.0.1连接数据库
MySQL localhost无法连接数据库解决办法
mysql远程连接无法打开 解决mysql无法打开远程连接的问题
MySQL利用localhost无法连接问题解决办法(127.0.0.1能连接)
MySQL unix_socket启动时连接失败解决方法
linux中PHP链接MySQL主机127.0.0.1与localhost
MySQL localhost无法连接数据库怎么办
解决MySQL密码正确却无法本地登录
远程连接Mysql数据库 ERROR 2003 (HY000)问题的解决方法
php error Can't connect to local MySQL server...的解决方法

[关闭]
~ ~