【问题标题】:RDS Grant Privileges (Remove Delete Privileges on Specific Table?) MySQLRDS 授予权限(删除特定表上的删除权限?) MySQL
【发布时间】:2020-10-23 20:43:56
【问题描述】:

目前我在 RDS 中有一个像这样的主用户

'master'@'%'

我已经创建了一个这样的用户

'new_user'@'%'

到目前为止,我可以授予该用户这些权限

 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'new_user'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION

是否可以授予这些权限,但有限制

DELETE PRIVILEGE? 在这样的特定表上tblCart

比如,我可以删除除表tblCart 之外的所有内容,此表中不允许删除?

【问题讨论】:

标签: mysql amazon-web-services amazon-rds


【解决方案1】:

旧答案是错误的。由于您没有定义 DELETE ON *.tblCart 这将不起作用。您必须全部撤消 DELETE 并手动添加它们。

REVOKE DELETE ON *.* FROM `new_user`@`%`;
GRANT DELETE ON <db>.<tbl1> TO `new_user`@`%`;
...
GRANT DELETE ON <db>.<tblN> TO `new_user`@`%`;

请参阅this post 了解如何为所有表生成语句。


旧答案

按照上述方式应用授权后,您可以像这样撤销tblCart 的权限:

REVOKE DELETE ON *.`tblCart` FROM `new_user`@`%`;

这将保留所有表的所有权限,但删除权限会从tblCart 删除行。

【讨论】:

  • 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“tblCart FROM new_user@%”附近使用正确的语法刚刚复制了您的 cmd
  • revoke delete on &lt;db-name&gt;.tblCart from 'new_user'@'%'; 试过这个 cmd 但给了我这样的错误ERROR 1147 (42000): There is no such grant defined
  • 嗯,这太糟糕了。我有多个表。像我将撤销当前数据库上的所有删除权限,然后手动授予具有删除权限的表只是为了在 tblCart 上应用删除权限
  • 是的,它不是很好,但它是一次性操作(希望如此)。我猜你看到我链接到的答案有一个查询来为 all 表生成 SQL,这样你就可以复制/粘贴一次?至少这会让它更方便一点。否则我认为创建存储过程或外部脚本是您最好的选择。
  • 也只需跳过在您的GRANT 查询中添加DELETE 权限,您将无需REVOKE 任何内容,然后只需运行链接查询并复制结果以授予删除所有权限但选定的表。
猜你喜欢
  • 2022-11-14
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2014-02-03
  • 1970-01-01
  • 2014-11-17
相关资源
最近更新 更多