教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL不能通过localhost或127.0.0.1连接数据库

MySQL不能通过localhost或127.0.0.1连接数据库

发布时间:2023-05-01   编辑:jiaochengji.com
教程集为您提供MySQL不能通过localhost或127.0.0.1连接数据库等资源,欢迎您收藏本站,我们将为您提供最新的MySQL不能通过localhost或127.0.0.1连接数据库资源
今天无事来给大家总结一下mysql连接数据库碰到的一些问题,下面最常见的mysql不能连接数据库就有不能通过localhost或127.0.0.1连接,下面我来介绍解决办法。

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的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连接的解决办法


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


修改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数据库 ERROR 2003 (HY000)问题的解决方法
mysqli连接提示 Warning: mysqli::mysqli(): (HY000/2002): No such file or directory
mysql允许外网访问如何设置
mysql授权远程访问的例子
mysqli使用localhost问题 Warning: mysqli::mysqli(): (HY000/2002): No such file or directory
mysql密码正确连接提示用户名与密码错误
php实现MySQL数据库连接
mysql支持getColumnName()取别名的方法
关于mysql操作的详细总结以及实例(一)
分享:mysql设置远程访问的多种方法

[关闭]
~ ~