【发布时间】: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以删除行。