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