【问题标题】:MySQL Stop a user from deleting an entire tableMySQL 阻止用户删除整个表
【发布时间】:2021-07-14 19:18:10
【问题描述】:

我在 MySQL 中有一个包含数百万条记录的表。 有没有办法防止用户意外执行“从 table1 中删除;”并且只允许他们通过执行此查询“delete from table1 where id=10;”来删除记录

当前用户权限是“GRANT SELECT, INSERT, DELETE ON db1.table1 TO 'user'@'localhost'”。

谢谢。

【问题讨论】:

  • 您必须使用角色来应对这种情况。在角色的基础上,您必须指定哪个角色可以删除记录。即管理员或用户。不允许用户在用户的情况下执行查询。
  • 使用 2 个不同的服务器。一种用于production,另一种用于development。在development 上进行所有开发查询。仅将经过测试的查询部署到 production。其他解决方案可能是为每个表创建TRIGGER BEFORE DELETE,并在此触发器内,插入backup_table 以删除行。

标签: mysql sql


【解决方案1】:

MySQL 有一个名为sql_safe_updates服务器 模式。尽管名称如此,但它同时适用于更新和删除。

启用此模式后,用户需要在where 子句中提供key,或者为updatedelete 提供limit

这也可以在 MySQL 客户端中设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 2019-01-16
    • 2014-08-21
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多