用的好好的MySQL,突然自己就崩溃了。。。重启之类的就报错:
# service mysqld restart
Starting MySQL.. ERROR! The server quit without updating PID file (localhost.localdomain.pid)...
插入一个其他问题:
bin/./mysqld_safe --defaults-file=/etc/my.cnf --user=root
此命令也解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' 问题。
解决:
1.首先你的 pid 文件是一定没有的,不管什么原因,他就是丢失了;pid文件是mysql启动后,生成的一个文件,里面记录的是mysql当前的进程号,如果创建失败,mysql就无法启动。
可能原因:
mysql的端口被占用
生成pid文件的目录mysql的权限不足
mysql对应的my.cnf配置文件错误
mysql的启动脚本有问题
mysql有残余数据影响了服务的启动
新增一个:有可能是你的内存不够,可以用"free -m"命令来查看自己服务器的内存,修改mysql配置文件my.cnf,添加如下设置参数:把mysql给InnoDB分配的内存设置为8M;
innodb_buffer_pool_size = 8M
以上可能性原因你都可以检查一下
2.本人的问题以上方式都没解决,以下是这个问题我的解决方式
3.去查看mysql的error日志,一般在my.cnf文件中配置:log-error=/var/log/mysqld.log,如果当初没配置默认一般在:/var/log/mysqld.log,延伸一下查找mysql日志的方式:
登录mysql终端
查看日志文件路径
mysql> show variables like 'general_log_file';
+------------------+------------------------------------+
| Variable_name | Value |
+------------------+------------------------------------+
| general_log_file | /usr/local/mysql/data/localhost.log |
+------------------+------------------------------------+
1 row in set (0.00 sec)
错误日志文件路径
mysql> show variables like 'log_error';
+---------------+------------------------------------+
| Variable_name | Value |
+---------------+------------------------------------+
| log_error | /usr/local/mysql/data/localhost.err |
+---------------+------------------------------------+
1 row in set (0.00 sec)
慢查询日志文件路径
mysql> show variables like 'slow_query_log_file';
+---------------------+-----------------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------------+
| slow_query_log_file | /usr/local/mysql/data/localhost-slow.log |
+---------------------+-----------------------------------------+
1 row in set (0.01 sec)
4.找到错误日志后去看里面的内容,同时在mysql bin 下面执行:
# ./mysqld_safe --defaults-file=/etc/my.cnf --user=root
来检测你当前无法执行原因,如果你只是执行 service mysqld start 只能报错【Starting MySQL.. ERROR! The server quit without updating PID file (localhost.localdomain.pid);】无法得知真正原因
当你的执行完上面的shell之后,去看你配置的错误日志【my.cnf中的log-error地址文件】
把所有暴露出的问题解决完就OK了,提醒。。。最后一次我去执行 # ./mysqld_safe --defaults-file=/etc/my.cnf --user=root 的时候,他打印两行就停那了,仿佛卡住了。。。
没关系,你只要去看你的错误日志就好,它里面会正常打印:
最终的打印中没有 error了就没问题了
5.此时你去看丢失的pid文件也就恢复了,登陆mysql去操作就OK了。