mysql - 我删除了用户表!我该如何恢复?

时间:2011-10-19 03:06:01

标签: mysql

我确定在事故中删除了表'mysql',然后发出了这个错误“表mysql.user dosen't exists”

我该如何修复它,或者创建一个新表'mysql'

3 个答案:

答案 0 :(得分:2)

你无能为力。如果您可以运行查询并且最近使用“BACKUP TABLE”备份整个数据库,那么您可以尝试运行此查询:

 RESTORE TABLE mysql.user FROM '/path/to/backup/directory'

如果你不能,那么你将不得不在命令行中使用'--skip-grant-tables'选项执行mysql。这将允许您获得至少获取访问权限。您也可以通过运行mysql_install_db命令重新创建它。 Found Here

无论哪种方式,您的表格应如下所示

 +-----------------+---------------+------+-----+---------+-------+ 
 | Field | Type | Null | Key | Default | Extra | 
 +-----------------+---------------+------+-----+---------+-------+ 
 | Host | varchar(20) | | PRI | | | 
 | User | varchar(6) | | PRI | | | 
 | Password | varchar(41) | | | | | 
 | Select_priv | enum('N','Y') | | | N | | 
 | Insert_priv | enum('N','Y') | | | N | | 
 | Update_priv | enum('N','Y') | | | N | | 
 | Delete_priv | enum('N','Y') | | | N | | 
 | Create_priv | enum('N','Y') | | | N | | 
 | Drop_priv | enum('N','Y') | | | N | | 
 | Reload_priv | enum('N','Y') | | | N | | 
 | Shutdown_priv | enum('N','Y') | | | N | | 
 | Process_priv | enum('N','Y') | | | N | | 
 | File_priv | enum('N','Y') | | | N | | 
 | Grant_priv | enum('N','Y') | | | N | | 
 | References_priv | enum('N','Y') | | | N | | 
 | Index_priv | enum('N','Y') | | | N | | 
 | Alter_priv | enum('N','Y') | | | N | | 
 +-----------------+---------------+------+-----+---------+-------+ 

答案 1 :(得分:1)

请注意,您不仅删除了表 - 您删除了整个mysql权限数据库。 您需要找到脚本'mysql_install_db'。这将重新创建mysql权限数据库。

请注意,通过删除并重新创建权限数据库 - 其他应用程序可能会停止工作,因为其用户/等已不再存在。

答案 2 :(得分:0)

您还可以通过运行mysql / bin目录中的mysql_upgrade文件来修复。 只需运行该文件即可修复所有表格。