我确定在事故中删除了表'mysql',然后发出了这个错误“表mysql.user dosen't exists”
我该如何修复它,或者创建一个新表'mysql'
答案 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文件来修复。 只需运行该文件即可修复所有表格。