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

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服务器了。




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cooler122/article/details/17682331
文章标签: 数据库 mysql linux
个人分类: 学习 mysql Linux
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭