phpmyadmin 错误1728(HY000):无法从mysql.user加载,该表可能已损坏

d8tt03nd  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(177)

**症状:**我刚尝试创建用户,就像我过去多次做的那样,却收到以下错误:

错误1728(HY 000):无法从mysql. user加载。该表可能已损坏

**原因:**自从上次通过phpMyAdmin创建用户以来,我所能想到的唯一可能导致此问题的操作是apt-get升级。据我所知,所有用户帐户都工作正常(测试所有帐户将是一个漫长的过程),其他数据库能够正常读取/写入/等
故障排除:
**upgrade:**我已经尝试了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(一个文件)
**users:**我有两个root用户(不同的名字,几乎相同的权限),他们都显示了对mysql.user的完全访问权限(显示并能够快速编辑--尽管完整的编辑缺少BLOB文件,这是问题所在吗?)
**创建用户方法:**我在使用CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';时遇到的错误与尝试通过phpMyAdmin时遇到的错误相同-通过我的两个root帐户

目前,我对重新安装MySQL甚至Ubuntu感到非常害羞,我看到的最接近的文章是关于mysql.proc的(这些文章都不起作用)

更新日志显示:

[警告]表mysql.user的定义不正确:位置41处应为列“password_expired”,但找到“password_last_changed”。
[错误] /usr/sbin/mysqld:无法从mysql. user加载。该表可能已损坏

gv8xihay

gv8xihay1#

即使在重新运行mysql_upgrade之后,user列的顺序仍然错误。
我的(不雅的)解决方案是:
1.导出用户
1.重新排列表列定义(将password_expiredpassword_last_changed交换)
1.导入为user2(只是为了确保)

  1. DROP TABLE user;(天哪!)
    1.将user2复制给用户(谢天谢地,它成功了!)

相关问题