ubuntu mysql删除用户_从MySQL数据库中删除权限

问题描述

在你认为这是一个重复的问题之前,我相信我有一个独特的,即使它有点dim-witted,案例。

几天前,我将我的Ubuntu 10.04服务器上的MySQL版本升级到5.3.3(它超过了10.04的Ubuntu版本)。今天,我尝试登录phpMyAdmin,发现有些可怕的Connection for controluser as defined in your configuration failed错误。

在按照几个关于如何解决这个问题的SO问题的描述之后,我已经陷入困境。

然后我尝试用户的manually remove the privileges – 有点愚蠢,我可能会添加 – 从数据库,然后删除数据库,然后是用户(使用flush privileges)。

我完全删除了phpMyAdmin的整个安装(删除应用程序和/etc /phpmyadmin目录)并重新安装(使用apt-get),但它表示phpmyadmin用户的权限已经存在:

granting access to database phpmyadmin for phpmyadmin@localhost: already exists

所以,这就是我留下的东西。我有一笔不能修改的补助金,也没有撤销:

mysql> show grants for 'phpmyadmin'@'localhost';

+-------------------------------------------------------------------------------------------------------------------+

| Grants for phpmyadmin@localhost |

+-------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY PASSWORD '*46CFC7938B60837F46B610A2D10C248874555C14' |

| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost' |

+-------------------------------------------------------------------------------------------------------------------+

2 rows in set (0.26 sec)

mysql> revoke usage on *.* from 'phpmyadmin'@'localhost';

ERROR 1141 (42000): There is no such grant defined for user 'phpmyadmin' on host 'localhost'

mysql> revoke usage on *.* from 'phpmyadmin'@'localhost' identified by 'trustno1';

ERROR 1141 (42000): There is no such grant defined for user 'phpmyadmin' on host 'localhost'

(别担心,我不再使用此密码,但它是以前使用过的密码,而不是我为新的phpmyadmin安装选择的密码)。

我如何完全删除这些拨款/特权?如果需要,我很高兴从头开始(phpmyadmin,不是数据库)。

最佳解决方案

mysql中的USAGE-privilege仅表示在全局级别*.*上定义的用户’phpadmin’@’localhost’没有特权。此外,该用户在数据库phpmyadmin phpadmin.*上有ALL-privilege。

因此,如果您想要删除所有权限并从头开始,请执行以下操作:

撤消数据库级别的所有权限:REVOKE ALL PRIVILEGES ON phpmyadmin.* FROM 'phpmyadmin'@'localhost';

删除用户’phpmyadmin’@’localhost’ DROP USER 'phpmyadmin'@'localhost';

上面的过程将完全从您的实例中删除用户,这意味着您可以从头开始重新创建他。

为了让您了解上述内容:创建用户后,将立即填充mysql.user表。如果您查看其中的记录,您将看到用户和所有权限设置为'N'。如果您使用show grants for 'phpmyadmin'@'localhost';,您将看到上面输出的allready familliar。简单地翻译为“在用户的全球级别没有特权”。现在您在数据库级别向此用户授予ALL,这将存储在表mysql.db中。如果您执行SELECT * FROM mysql.db WHERE db = 'nameofdb';,您将在每个priv上看到'Y'。

上面描述了目前你的数据库上的场景。因此,只有具有USAGE权限的用户意味着该用户可以连接,但除了SHOW GLOBAL VARIABLES; SHOW GLOBAL STATUS;之外,他没有其他权限。

次佳解决方案

作为旁注,revoke usage on *.* from 'phpmyadmin'@'localhost';不起作用的原因很简单:没有名为USAGE的授权。

授权USAGE是逻辑授权。怎么样? ‘phpmyadmin’@’localhost’在mysql.user中有一个条目,其中user = ‘phpmyadmin’,host = ‘localhost’。 mysql.user中的任何行在语义上都表示USAGE。运行DROP USER 'phpmyadmin'@'localhost';应该可以正常工作。在幕后,它真的这样做:

DELETE FROM mysql.user WHERE user='phpmyadmin' and host='localhost';

DELETE FROM mysql.db WHERE user='phpmyadmin' and host='localhost';

FLUSH PRIVILEGES;

因此,从mysql.user中删除一行构成运行REVOKE USAGE,即使REVOKE USAGE不能逐字执行。

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值