mysql服务可以启动直来,但是用php进行连接的时候,出现Could not connect: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)。排错过程:
到/tmp/下确实没有mysql.sock.
执行 bin/mysqld_safe –user=mysql ,可以看到提示,信息放到/var/lib/mysql/zuolong.err文件 里.zuolong为你的hostname
查看 /var/lib/mysql/yourhostname.err里面的信息,看到启动mysql时,会看到在/var/run/mysqld/生成mysqld.sock文件。
用ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock,重启一下mysql服务,php连接正常。
系统重启后,/tmp/msyql.sock文件又没了,错误又出现。
执行
bin/mysqld_safe –user=mysql –socked=/tmp/mysql.sock
在/tmp/里面可以生成mysql.sock,php也正常。
可是重启以后,系统是不会加上–socked的这项呀,查看了一下mysql自动启动脚本:
vim /etc/init.d/mysql
发现里面也没涉及到socked的地方。
头大了,不可能我手动在这里面配置吧。。。~_~
再次跑去修改/etc/my.cnf里面的socket=/tmp/mysql.sock,结果还是不行。找了大量资料,都发现不了问题。
最后,在偶然的机会,发现在/etc/里面还有一个mysql目录,进去又发现了一个my.cnf文件。这就奇怪了。
这个目录和文件 都是编译安装后自动生成的。而在/etc/下的那个my.cnf是我按网上教程自己copy来的。在里面无论怎么配置socket都不生效。
解决:
vim /etc/mysql/my.cnf
一看里面的配置,就知道问题所在了。
将
socket = /var/run/mysqld/mysqld.sock
修改为
socket = /tmp/mysql.sock
重启mysql,问题解决
--转自