mysql:恢复管理员用户的所有权限

时间:2014-04-24 17:47:24

标签: mysql permissions grant

我可能会在这里要求不可能的事情。我刚刚尝试在phpMyAdmin中重置密码。为此,它使用新密码创建一个新用户,并为您提供删除旧用户的选项。我选择删除旧用户并创建具有相同权限的新用户。

然后phpMyAdmin把我踢了出去。所以我认为这是因为我需要使用我的新密码登录。我试了几次,它不会让我进去。

所以我使用命令行(mysql -u root -p)以root身份登录。我能够登录并看到我的原始用户实际上不在那里。所以我再次创建了用户,并尝试向该用户授予所有权限并获得:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

然后我检查了用户root的GRANTS并看到了:

mysql> show grants for current_user();
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, 
FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, 
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, 
SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* 
TO 'root'@'localhost' IDENTIFIED BY PASSWORD 'blah' WITH GRANT OPTION

对我而言,我似乎没有权限与root用户授予GRANT权限。为了安全起见,我可能已经设定了这一点。

基本上我不认为DB中有用户可以获得授予所有权限的权限。我能恢复吗?!?!请帮忙?!?我是否需要创建一个新的mysql实例?

1 个答案:

答案 0 :(得分:3)

看起来你可能会有一些不合理的补助金。为什么我这样说???

我之前在DBA StackExchange中处理了授权表问题

如果查看the first link,我会将MySQL 5.6中mysql.user的所有布局显示回MySQL 4.1。

显然,看起来您在没有修复mysql.user的情况下升级了MySQL。

希望你能跑

# mysql_upgrade --upgrade-system-tables

重新对齐mysql.user,并使用Y自动填充缺少的权限。