错误 1728 (HY000): 无法从 mysql.user 加载。该表可能已损坏
Posted
技术标签:
【中文标题】错误 1728 (HY000): 无法从 mysql.user 加载。该表可能已损坏【英文标题】:ERROR 1728 (HY000): Cannot load from mysql.user. The table is probably corrupted 【发布时间】:2017-10-21 03:47:09 【问题描述】:症状:我刚刚尝试创建一个用户,就像我过去做过很多次一样,只是收到这个错误:
错误 1728 (HY000):无法从 mysql.user 加载。表大概是 损坏
原因: 自从我上次通过 phpMyAdmin 创建用户以来,我能想到的唯一可能导致这种情况的事情就是 apt-get 升级。据我所知,所有用户帐户都可以正常工作(测试所有帐户将是一个漫长的过程),并且其他数据库能够正常读取/写入/等
疑难解答:
升级:
我已经尝试过mysql_upgrade
,它都报告该表(和所有其他表)都正常,并且需要--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 的定义不正确:预期列 'password_expired' 在位置 41,找到'password_last_changed'。
[错误] /usr/sbin/mysqld:无法从 mysql.user 加载。该表是 可能已损坏
【问题讨论】:
【参考方案1】:即使重新运行mysql_upgrade
,用户列的顺序仍然错误。
我的(不优雅的)解决方案是:
-
导出用户
重新排列表格列定义(将
password_expired
与password_last_changed
交换)
导入为user2
(只是为了确定)
DROP TABLE user;
(天哪!)
将user2
复制给用户(谢天谢地!)
【讨论】:
以上是关于错误 1728 (HY000): 无法从 mysql.user 加载。该表可能已损坏的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 17.10 - ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysq
mysql错误:错误1018(HY000):无法读取'.'的目录(错误号:13)
MySql:错误 1018(HY000):无法读取 '.' 的目录(错误号:13)
连接错误 - SQLSTATE [HY000] [2002]操作超时
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysq