今天在帮一个同学解决Centos中mysql数据库启动时,遇到一个比较典型的错误,特别记录一下,供以后参考。
先在centos中独立安装了mysql,重启电脑或停掉mysql服务后,安装xampp,启动xampp后发现无法通过mysql命令正常访问mysql。
报错信息为:
[error 2002] – Can’t connect to local MySQL server through socket /var/lib/mysql/mysql.sock
这个错误算是一个比较常见的错误。一般引起error2002错误的原因比较多,大家需要对症下药(本文所论述的问题引起原因上面已经写得比较清楚了),切不可硬搬照抄。当然,本着多尝试的精神来试试也是不错的,但不保证就一定能解决你遇到的问题。
一、先关闭xampp。然后再彻底关闭mysql服务。命令如下:
service mysqld stop # 这是第一句命令
chkconfig mysqld off # 这是第二句命令
二、上面的命令执行成功后,再启动你的xampp。
xampp start
三、这一步关键操作来了,编辑文件/etc/my.cnf,在该文件的末尾处加上下面两行代码并保存。当然,如果你的xampp安装路径跟我不一样,请自行修改。
[client]
sock= /opt/lampp/var/mysql/mysql.sock
OK,mysql已经可以正常访问了。
这里问题的关键是这个mysql.sock文件,具体这个文件的作用在这里就不细说了,大家可以简单理解为centos系统与mysql服务之间是通过socket文件进行通信的,而mysql.sock文件就是这个通信的载体(linux中一切皆文件)。
在最开始的操作中,我们单独安装了mysql,所以会导致mysql将这个通信载体保存在路径/var/lib/mysql/mysql.sock中,这个路径是mysql默认保存该文件的位置。
后来,我们停掉了这个mysql服务,这个操作会导致原来保存在/var/lib/mysql/这个路径下的mysql.sock被删掉,但在系统配置文件/etc/my.cnf中,仍然记录着我们停掉的这个mysql服务生成的sock文件的位置。当我们后面启动xampp中的mysql时,这个mysql会将mysql.sock文件生成在xampp安装路径下的lampp/var/mysql/mysql.sock中,而系统仍然会按照my.cnf中的路径去找mysql.sock,结果当然就找不到了:)。
转载请注明:XAMPP中文组官网 » Centos中关于xampp启动错误的一个解决方法