2010-03-05 75 views
0

通过添加新的领域编辑MySQL系统表

ALTER TABLE mysql.user ADD id integer(11) unsigned FIRST; 

并重新启动MySQL守护程序修改mysql用户表(mysql.user)后,现在是不可能的身份登录的任何用户。

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

+0

不应该修改核心系统表(用户标识没有id列工作正常),显然没有什么可以阻止你这样做。 – mpe 2012-04-26 14:54:53

回答

1

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

一些想法浮现在脑海中,但他们都猜测:

  • 代码预计mysql.user 37场;添加38引起的数据结构溢出
  • id是内部特殊和增加它造成的意外情况
  • 系统的完整性和正确性检查确定了一个意想不到的变化,从你可能除了关机保护性