您的位置:首页 > 运维架构 > Linux

Linux下Mysql数据库 Can 't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock '

2013-12-30 15:55 363 查看
Mysql数据库安装到Linux的时候会在linux建立一个名为mysqld的服务。
可以使用命令:chkconfig --list ,查看linux系统中所有的服务。



可以看到上图倒数第二行为mysqld服务。
如果此服务不开启,就是mysql服务器没有开启,下面做个试验:



经查询,当前没有mysql进程,mysqld服务没有打开。如下图,将连接不上mysql服务器,这是很自然的,没有打开mysql服务器,就没有生成mysql.sock文件,系统找不到mysql.sock文件。



那么就开启mysqld服务,使用命令:service mysqld start
如下,但是有时候即使打开mysqld服务,还是连不上,如下:


这是由于,mysql数据库由于使用不同方式安装,使得数据库开启时寻找mysql.sock的方式也不同,此处在/export/servers/mysql/mysql.sock下寻找此文件。但这个路径下却没有此文件,所以无法连接。
但实际上mysql.sock文件在开启mysqld服务的时候已经生成了,只是不在/export/servers/mysql/路径下,下面手动查查它在哪里。
使用命令:find / -name mysql.sock
从/目录下查找mysql.sock文件的位置。



发现本机器的mysqld服务开启后,mysql.sock生成到了/export/servers/mysql/tmp/(其他机器可能不是此路径,需要用find命令查),而数据库连接时却到/export/servers/mysql/中去查找,自然是找不到的。
/tmp/mysql.sock是在第一次开启mysqld服务时生成的。
为了能让数据库连接时顺利找到此文件,有如下几种方式:

1.)你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东: 
  [mysqld] 
  socket=/var/lib/mysql.sock 
  改一下就好了,但也会引起其他的问题,如mysql程序连不上了,再加一点: 
  [mysql] 
  socket=/tmp/mysql.sock 
  或者还可以通过修改php.ini中的配置来使php用其他的mysql.sock来连,这个大家自己去找找
  
2.)创建连接方法:
  ln -s  /export/servers/mysql/mysql.sock  /export/servers/mysql/tmp/mysql.sock 



此时,在/export/servers/mysql中建立了软链接。当然也可以建立/tmp/mysql.sock的软连接。

此时,可以顺利连上mysql服务器了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mysql linux
相关文章推荐