我正在尝试删除 mysql 用户的权限,以便无法删除特定的数据库。但是如果我运行这个命令:
revoke all privileges on test.* from 'demo'@'localhost';
Run Code Online (Sandbox Code Playgroud)
或这个
revoke drop on test.* from 'demo'@'localhost';
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
错误 1141 (42000):没有为主机“localhost”上的用户“demo”定义此类授权
test是数据库的名称。
演示用户的权限是这样的:
mysql> show grants for demo@'localhost';
+----------------------------------------------------------------------------------------------------------------------+
| Grants for demo@localhost |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'demo'@'localhost' IDENTIFIED BY PASSWORD '*C142FB215B6E05B7C134B1A653AD4B455157FD79' |
Run Code Online (Sandbox Code Playgroud)
此外,当我以用户 demo 登录时,我可以删除数据库测试。
当我尝试从用户演示中删除权限时,为什么会出现此错误?
这有一个很大的原因。MySQL 中有四个级别的授权
mysql.user)mysql.db)mysql.tables_priv)mysql.columns_priv)当你跑
show grants for demo@'localhost';
Run Code Online (Sandbox Code Playgroud)
mysqld 阅读了赠款并看到demo@'localhost'了mysql.user
当你跑
revoke all privileges on test.* from 'demo'@'localhost';
Run Code Online (Sandbox Code Playgroud)
mysqld 寻找补助金,不是在mysql.user,而是mysql.db。
您不能从具有全局授权的用户那里提取对单个数据库的授权。
| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |