使用MySQL创建用户命令时报错:
mysql root@192.168.1.27:sanguo> create user myuser IDENTIFIED by '123456'
(1033, u"Incorrect information in file: './mysql/tables_priv.frm'")
搜索发现是因为系统存放一些元数据的数据库损坏,需要重建各种系统库。
参考链接:
- stackoverflow的解决方案,但是其中提到的update命令无效,执行后会提示更新失败
- mysql-fix-privilege-tables命令,用来重建系统表
修复步骤:
- 查找失效文件路径
$ sudo find / -name tables_priv.frm
/home/mysql/mysql/tables_priv.frm
/home/mysql_back/mysql/tables_priv.frm
- 跟该表相关的一般有三个文件,先进行备份
$ sudo su
# ls /home/mysql/mysql/procs*
/home/mysql/mysql/procs_priv.frm
/home/mysql/mysql/procs_priv.MYI
/home/mysql/mysql/procs_priv.MYD
# for i in `ls /home/mysql/mysql/procs*`; do mv $i $i.bak; done
- 执行mysql_fix_privilege_tables
mysql_fix_privilege_tables --password=123456
- 重启MySQL,再次尝试新建用户操作
$ sudo service mysqld restart