症状:我刚刚尝试创建一个用户,就像我过去做过很多次一样,只是为了收到这个错误:
错误1728(HY000):无法从mysql.user加载。表可能是 损坏
原因: 自从我上次通过phpMyAdmin创建一个可能导致这个问题的用户以来,我能想到的唯一一件事就是apt-get升级。至于我可以告诉所有用户帐户工作正常(测试所有将是一个漫长的过程)和其他数据库能够读/写/等精细
排除故障:
升级:
我已经尝试mysql_upgrade
,它们都会将该表(以及所有其他表)报告为OK,并且需要--force
选项。我已完成apt-get upgrade dist
并重新启动(之后是另一个mysql_upgrade
- 嘿,为什么不这样做)问题仍然存在。
权限:
我已验证/var/lib/mysql
以南的所有文件中的权限是mysql:root rw:rw: - (最初是mysql组,但只有用户可见)包括/var/lib/mysql-files
(空) /var/lib/mysql-keyring
(一个文件)和/var/lib/mysql-upgrade
(一个文件)
用户: 我有两个root用户(不同的名称,几乎相同的权限),并且都显示对mysql.user的完全访问权限(显示并且能够快速完成 - 尽管完整编辑缺少BLOB文件,这可能是问题吗? )通过phpMyAdmin。
创建用户方法:
使用CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
时遇到同样的错误,通过phpMyAdmin尝试 - 通过我的root帐户
此时我很难重新安装MySQL或者甚至是Ubuntu的堆栈溢出,而我看到的最接近的文章是mysql.proc(它没有工作)
更新日志显示:
[警告]表mysql.user:expected列的定义不正确 ' password_expired'在第41位,发现' password_last_changed'。
[ERROR] / usr / sbin / mysqld:无法从mysql.user加载。表是 可能已损坏
答案 0 :(得分:4)
即使重新运行mysql_upgrade后,用户的列仍然是错误的顺序!
我不太优雅的解决方案是: