我想授予用户 update
权限来更新除一列之外的所有列 - 在我的例子中是 Id(更改 Id 可能会使数据、现有 URL 等变得一团糟 - 外键是 不是解决方案)。在 mysql 中是否可以不列出所有其他列?例如。以某种方式说:
grant update on db.table to user;
NOT grant update id on db.table to user;
或者类似的东西?
我不想列出所有列的原因:
它更健壮 - 我经常在以后向表中添加一些列,我可能会忘记我还必须更新此规则,
我没有
grant
权限,所以我必须让我的托管服务提供商运行每个grant
命令,所以我想尽可能减少这些请求是一种超标准的服务(这是他们对我的恩典)。
特别是 mysql,但我也对 gereric sql 解决方案感兴趣。
最佳答案
你应该了解更多关于数据库完整性的知识,就 foreign keys .
外键是 Dabase 关系系统保持完整性而无需人工操作的方式。来自 mySql FK documentation :
"RESTRICT: Rejects the delete or update operation for the parent table."
使用外键避免损坏有一些优点:
- 是内置功能:性能将优于触发器或其他系统。
- 这是执行此操作的标准方法:其他开发人员可以理解您在做什么。
- 报表解决方案和其他应用程序可以了解关系数据库字典。
根据 OP 评论编辑
不可能授予对象的高级权限然后撤销低级别权限,查看 selective privileges in MySQL (并对答案进行投票)。
这意味着您应该授予对表的插入权限、对所有字段的选择权限以及仅对非 id 字段的更新权限。您可以编写一个脚本来为您执行此操作。
我希望这最终能回答您的问题。
关于mysql - 如何授予除一列以外的所有列的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9015371/