2011-10-19 59 views

回答

1

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

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

+1

应用程序的好处。我忘了在我的回答中加上 –

+0

@詹姆斯 - 谢谢 - 只知道这个,因为我以前打过这堵墙;-) –

+0

所以我不小心也这样做了(试图迁移数据库并意外将它迁移到自己。 ..)但我的用户仍然可以登录。是用户\密码缓存? – dangel

2

有没有很多,你可以做。如果你可以运行查询和最近备份使用“BACKUP TABLE”整个数据库,那么你可以尝试运行此查询:

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

如果你不能,那么你将有“--skip执行mysql的-grant-tables'选项。这将允许你获得获取权限。您还可以通过运行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 | | 
+-----------------+---------------+------+-----+---------+-------+ 
+0

顺便说一句,我怎么能删除一个名为'my/db'的数据库,我使用'drop database my/db'来显示我的语法错误。 – coolesting

+0

数据库名称应该(通常不能)包含\或/。正常的命名约定使用CamelCase和_命名。 http://dev.mysql.com/doc/refman/5.1/en/identifiers.html - 8.2。模式对象名称 –

+0

但在创建之前,它有一个名为'my/db'的表,我只想删除它? – coolesting

0

您还可以通过运行在MySQL/bin目录中找到文件修复mysql_upgrade。 只需运行该文件,它将修复所有表格。

+0

正在运行mysql_update -uroot -v -f给我:\ bin> mysql_upgrade -u root --force mysql_upgrade:出错:1524:插件'* 3341D225A70FDF32F7D6E158192BF9A65654BE7F'在连接到MySQL服务器时未加载 升级过程遇到错误并且将不会继续。 – FMaz008