Linux The server quit without updating PID file的几种解决方法
不管是在安装还是运行MySQL的时候,都很有可能遇到报错:Linux The server quit without updating PID file。字面意思是无法更新pid文件,pid大家都懂得,就是MySQLserver的主进程,MySQL中比较重要的三个文件,一个是管进程的,也就是上面报错的那个pid文件,这个文件名是本机的域名加pid后缀,第二个文件是mysql.sock 文件,这个文件是进程间通信,以及mysql与其他程序通信的socker接口文件,第三个文件是最为重要的mysql配置文件,没有之一,my.cnf、端口的定义,大小写敏感的定义。连接数的定义,等等配置都在这个文件内定义。
那么,这个错误的原因是什么呢?我想说,原因很多,需要根据具体情况具体分析。
第一,权限的问题,在出这个错误的时候,我所说的权限是mysq.cnf和所定义的mysql数据库存放目录的权限,要保证是mysql用户的权限,如果启动mysql还有问题,那么需要考虑提高权限了。
说人话, 数据库存放目录必须是mysql这个用户的属组(通常的,安装MySQL的时候建立的用户为mysql,不建议使用别的用户),mysql的启动脚本必须有执行权限。赋予权限的命令为:chown -R mysql. /usr/local/mysql,假设我的mysql是安装在 /usr/local/mysql目录,数据库存放目录为 /usr/local/mysql/data/
第二,进程中有mysql的进程,上次的退出并没有自动结束该pid,导致新的进程无法启动,毕竟,mysql每次启动系统只会给分配一个pid号,再启动,系统也不可能给你分配pid号了。运行命令 ps -ef |grep mysql 找到mysql的进程结束它,然后在启动mysql。
第三,进入mysql数据库的存放目录,如果有mysql-bin.index这样的文件,删除它,在启动mysql,该文件产生的原因不详,不过删除必定没影响,或者另一个binlog.index也删除,两个index后缀的都删除也可以。
第四,my.cnf 这个配置文件内容不对,检查有没有skip-federated这个字段,如果有注释或者删除。
检查是否定义了数据库存放目录,如果没有定义,请立刻定义。
第五,错误日志目录不存在解决方法:使用“chown” “chmod”命令赋予mysql目录所有者及权限。
第六,my.cnf文件内存在lower_case_table_names=1 字段,注释掉它。(这个选项是1表示不区分大小写)。具体原因不详。
总结:mysql说好安装也好安装,说难也难,难点在于权限的配置,给高了不安全,给低了有可能启动出问题,如果启动出问题了,首先第一件事就是检查目录权限,第二就是检查my.cnf这个配置文件,skip-federated,lower_case_table_names=1 ,这样的字段注释掉,第三,清除旧的mysql进程,如果有就清除掉,旧的不去新的不来,就这么一个道理。第四,进入mysql数据库存放目录删除index后缀的文件。下面,给张图,详细的权限慢慢体会、