Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
今天在用一键安装mysql的shell脚本安装mysql-5.1.73软件后发现mysql始终无法启动,多次执行后依旧报错,只能去查看error日志,发现了如下的2个错误:
错误一:Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
错误二:InnoDB: Error: combined size of log files must be < 4 G
很明显,错误一表示有系统表缺失,错误二表示redo log总大小超4GB啦。
经查询https://bugs.mysql.com发现这是个BUG,而stackoverflow上的答复大致是:
删除mysql安装的相关文件如:/etc/my.cnf,/usr/bin/mysql,/var/lib/mysql以及$datadir文件夹等,然后重启服务器,再次安装即可。
链接在此:https://stackoverflow.com/questions/9083408/fatal-error-cant-open-and-lock-privilege-tables-table-mysql-host-doesnt-ex
照做后安装成功,检查自己的安装脚本发现并无删除$datadir文件夹的命令。
猜测是因为第一次wget下载的安装包由于网络原因出了点小意外,导致第一次生成的data文件下的系统表空间里缺了mysql.host表,从而出现了启动失败的错误。
而错误二则是个伴生错误,data文件下的ib_logfile未被删除,导致二次安装想生成logfile时发现总容量超过了4GB(此限制在5.6.2之后被修改为512GB)。
最后完善了下安装脚本,加入删除data文件的命令。