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

时间: 2024-10-05 19:23:17

MySQL localhost无法连接数据库解决办法的相关文章

MySQL localhost无法连接数据库怎么办

如果上面办法还是没有用可参考如下解决办法 问题:一台服务器的PHP程序通过localhost地址无法连接数据库,但是如果设置为127.0.0.1则可以正常连接,连接其他数据库服务器也正常.MySQL的权限设置正确,且通过mysql命令行客户端可以正常连接数据库. 分析:这是典型的socket没有正确设置的情况. 连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock).大部分情况下,可以用localhost代表本机127.0.0.1,

使用php 5时MySQL返回乱码的解决办法

在使用 PHP 5 中,通过 MySQL 查询得到的值全部成为 '???????',原来是字符集设错了. 我在安装 MySQL 5 时,已经选择默认字符集为 gb2312,但还是返回乱码,解决的办法是在连接 MySQL 服务器后,调用一个与所设字符集相同的 "set names X" 语句(X 为你所设的字符集).下面是我的连接函数: function sql_connect() { global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $

命令行登录mysql提示Segmentation fault解决办法

使用时报错如下 [root@localhost bin]# ./mysql -uroot -p Enter password:  Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.6.24 Source distribution Copyright (c) 2000, 2015, Oracle and/or its affiliates

无法远程登入MySQL的几种解决办法

方法一: 尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13.HINET-IP.hinet.net' is not allowed to connect to this MySQL Server 这个是因为权限的问题,处理方式如下: shell>MySQL --user=root -p 输入密码 mysql>use MySQL MySQL>GRANT SELECT,INSERT,UPD

mysqld-nt.exe: Sort aborted Mysql临时文件无法写入解决办法

今日一台Win2003的统计服务器,出现了统计失败,Mysql错误日志显示: mysqld-nt.exe: Sort aborted 大概是说 mysql排序中断.(Sort aborted - 排序取消) 此出错信息是指排序过程中(从数据库从读取数据默认的是order by id asc),系统难以承受了.(比如数据量特别大等情况),也有可能是数据库损坏等情况引起的. 解决方法:优化sql语句.检查内存使用情况.MYSQL 配置文件中的 :sort_buffer_size .read_rnd_

MyEclipse连接MySQL数据库报错解决办法_Mysql

我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助. 一般MySQL连接不上,可能有两大原因:1.MyEclipse配置错误 2.MySQL配置不当. 一.我们一般的连接步骤如下: 1.在MyEclipse中连接MySQL数据库:依次点击window-->show view-->other-->MyEclipse Database-->DB Browser 图一:

安装VestaCP导致MySQL无法启动的解决办法

问题描述 使用官方命令(如何安装)安装VestCP遇到如下错误 To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the followi

Mysql控制台显示中文乱码解决办法

很多时候,全程next安装下来的MySQL有很多问题. 不是数据库里乱码,就是控制台显示乱码: 通常的情况是:   数据库里是正常的,但控制台查询显示的是乱码. 解决方法:   1.打开安装目录里的my.ini文件   2.修改default-character-set=gbk   3.修改character-set-server=utf8

MySQL主从复制不一致的解决办法

在MySQL主从复制程中或多少出现一些主从不同步的情况,本文将对数据主从不同步的情况进行简单的总结,请注意本文主要从数据库层面上探讨数据库的主从不一致的情况. 1.网络的延迟 由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计. 2.主从两台机器的负载不一致 由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sq