编辑MySQL系统表

编辑MySQL系统表,mysql,Mysql,通过添加新字段修改mysql用户表(mysql.user)后 ALTER TABLE mysql.user ADD id integer(11) unsigned FIRST; 重新启动mysql守护进程后,现在无法以任何用户身份登录 我的问题是mysql使用了什么mecanism来防止其核心系统表被修改?我可以理解,如果我编辑字段定义,或者更糟糕的是,如果我删除一些字段,mysql将不喜欢我,但我觉得很奇怪,它根本不接受我添加新字段。有什么问题吗?我有点惊讶,还没有一个名为id的字段 我想到

通过添加新字段修改mysql用户表(mysql.user)后

ALTER TABLE mysql.user ADD id integer(11) unsigned FIRST;
重新启动mysql守护进程后,现在无法以任何用户身份登录


我的问题是mysql使用了什么mecanism来防止其核心系统表被修改?我可以理解,如果我编辑字段定义,或者更糟糕的是,如果我删除一些字段,mysql将不喜欢我,但我觉得很奇怪,它根本不接受我添加新字段。有什么问题吗?

我有点惊讶,还没有一个名为
id
的字段

我想到了几个想法,但都是猜测:

  • 代码要求mysql.user中有37个字段;第38个字符的添加导致数据结构溢出
  • id
    在内部是特殊的,添加它会导致意外情况
  • 系统完整性和健全性检查发现意外更改并保护性关闭

除此之外,您可能不应该修改核心系统表(用户标识在没有id列的情况下可以正常工作),显然没有什么可以阻止您这样做。