2022-05-22T08:39:38.628913Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2022-05-22T08:39:38.628983Z 0 [ERROR] Fatal error: Failed to initialize ACL/grant/time zones structures or failed to remove temporary table files
一般来说,这个问题会出现在数据库/var/lib/mysql里面的一些问题,比如说,里面在安装数据库之后启动没有正常创建mysql.user
这边提供一个解决思路,该思路建议在数据库最开始的时候使用,不建议使用在已经投入使用的数据库
mkdir /mysqldata
这个文件夹是我用来临时存放的MySQL数据的地方,可以自定义
将my.cnf里面的datadir改成/mysqldata包括sock文件的放置目录
vim /etc/my.cnf
...省略
datadir=/mysqldata
...
重启数据库之后就会在新地方生成新的数据库文件,然后此时新的mysql.user已经被生成了,我们再把/mysqldata所有的文件全部移到原本的 /var/lib/mysql下面
cp /mysqldata/* /var/lib/mysql
此时再修改my.cnf里面的datadir,为/var/lib/mysql,就可以成功重启数据库了
请根据个人环境选择不同的方法解决问题,问题的解决方法并不适用与所有人与环境