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  ”  数据库连接一切正常。

时间: 2024-08-02 11:52:33

MySQL不能通过localhost或127.0.0.1连接数据库的相关文章

mysql安装后用netstat -an怎么没有localhost或者127.0.0.1

问题描述 mysql安装后用netstat -an怎么没有localhost或者127.0.0.1 mysql安装后用netstat -an怎么没有localhost或者127.0.0.1,安装的时候改了端口号 补充:我是在虚拟机下面安装的 解决方案 android:failed to connect to localhost/127.0.0.1Error : call to localhost/127.0.0.1:9000 failed on connection exception : ja

刚下的mysql 无论127.0.0.01还是localhost都连接不上是什么情况?

问题描述 刚下的mysql 无论127.0.0.01还是localhost都连接不上是什么情况? 刚下的mysql 无论127.0.0.01还是localhost都连接不上是什么情况? 求教 解决方案 说错,127.0.0.1 解决方案二: 楼主可以试一下127.0.0.1 你多了个0哦亲 解决方案三: 去service配置里面看看localhost配置信息 解决方案四: service服务没开? 解决方案五: 我是从U盘里直接(#‵′)拷的别人的可以用么,配置里面没有localhost信息 解

php mysql localhost,127.0.0.1和ip区别_Mysql

一家之言: localhost与127.0.0.1的区别 localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析.看来这个入门问题还有人不清楚,其实这两者是有区别的. no1: localhost也叫local ,正确的解释是:本地服务器127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器) no2: localhot(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相

MySQL主机127.0.0.1与localhost区别总结

1. mysql -h 127.0.0.1 的时候,使用TCP/IP连接, mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain" 2. mysql -h localhost 的时候,是不使用TCP/IP连接的,而使用Unix socket:此时,mysql server则认为该client是来自"localhost" 3. mysql权限管理中的"localhost"有特定含义: 注意:

MySQL利用localhost无法连接问题解决办法(127.0.0.1能连接)

  安装后使用探针进行PHPINFO测试的时候.发现默认的localhost不能连接MariaDB数据库,但是通过127.0.0.1又可以连接.表示很郁闷.最初想到的是:是不是linux服务器上的hosts文件问题. 于是就 echo "127.0.0.1 localhost">>/etc/hosts && sync 结果还是一样,localhost无法连接127.0.0.1可以连接. 在网上看到有朋友说是selinux的问题,但,一般系统安装好了后我都是已

php-使用wampsever时localhost打不开而127.0.0.1可以正常访问,怎么解决?

问题描述 使用wampsever时localhost打不开而127.0.0.1可以正常访问,怎么解决? T^T试了所有的方法,改过apache中conf文件的端口没用又改回了80,而且IIS在进程中没有开启,且关闭了在控制面板-添加删除程序-添加windows组件中的Internet服务.localhost还是会显示IIS的图,实在不知道怎么好了,打开127.0.0.1的时候是可以正常访问的.下面的是图片,刚开始学web技术,还请各位多多指教!~T^T好急的!! ! 后续:图片说明 刚才测试了一

python连接mysql错误:Cant connect to MySQL server on 127.0.0.1

python做了一个程序,需要频繁读取数据并写入数据. 运行了几天后发现每次运行几个小时后都会出现mysql链接错误,关键错误信息如下: 2003, "Can't connect to MySQL server on '127.0.0.1' (10048) 看了一些资料,mysql的10048错误是因为端口不够用,不能建立新的链接!问题是原来的链接我已经关闭了啊!最关键的在于:关闭的链接,其端口不是立即可用的,windows默认的端口周期是240秒. 解决办法,从两方面下手: 1.增加可用端口

Host '127.0.0.1' is not allowed to connect to this MySQL server

错误:Host  '127.0.0.1'  is  not  allowed  to  connect  to  this  MySQL  server 一般原因: MySQL数据库的配置文件my.ini中设置了参数: skip-name-resolve        从而导致使用"localhost"不能连接到数据库. 解决方法: 注释掉: #skip-name-resolve     注释掉对数据库的设置略有影响,但影响不大.

CentOS下php使用127.0.0.1不能连接mysql的解决方法

php代码很简单:   代码如下: $server="127.0.0.1"; println("Begin"); $link = mysql_connect($server,"mysql","mysql"); if (!$link) {     die('Could not connect: ' . mysql_error().mysql_errno()); }   linux本机下使用php mysql.php 可以查看运行