上一篇讲了几种常见的解决方法,刚好有朋友遇到这个问题,我整理了下解决的思路,告诉大家,以后方便以一反三,不再为此头疼。
先上错误提示
ERROR! MySQL server PID file could not be found!
Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/var/iZ115u08wfmZ.pid).
根据这个提示,我们首先第一步,要先找下mysql的错误日志。一般默认情况下在mysql /data 目录下,我的目录在上面报错的目录 /usr/local/mysql/var/ 。
在这个目录中,mysql 会存一个错误日志文件 xxx.err。打开它,翻到最后,可以看到有下面一个报错提示。
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
打不开这个用户表,mysql.user 表不存在。网上翻阅资料,查明原因是在装mysql的时候,初始化的目录不是现在的目录,导致mysql找不到这个目录,pid文件生成不了,重启失败。
问题找到,解决方案也就出来了,我们使用 mysql_install_db 工具,初始化数据库,重新指向mysql的数据目录
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql
--user=mysql
datadir=/usr/local/mysql/var
我的mysql_install_db 存放在 /usr/local/mysql/scripts/ 目录下,这里用了三个参数,–basedir 为安装目录,–user 指向数据库用户, datadir 为你当前使用的 mysql data 目录, 我的data目录就是 /usr/local/mysql/var。
运行一下,你的数据库的用户名将全部清空,这时候的mysql root 用户是没密码的,一定要记住设置密码,这时候再重启,就提示你成功了。
另外,我使用的是5.5版本的mysql.这时候 mysql_install_db 还是存在的,但是在5.7之后你就要改用 /mysqld –initialize 去操作,都差不多。
本篇核心思想就是,处理错误,先查错误日志,再具体问题具体分析,不用花费不必要的时间。