MYSQL数据库防止mysql表被清空的方法详解

MYSQL数据库防止mysql表被清空的方法详解,第1张

概述介绍《MYSQL数据库防止mysql表被清空的方法详解》开发教程,希望对您有用。

《MysqL数据库防止MysqL表被清空的方法详解》要点:
本文介绍了MysqL数据库防止MysqL表被清空的方法详解,希望对您有用。如果有疑问,可以联系我们。

导读:为阻止用户删除或清空表以及数据,可以直接从权限下手,给他少量的权限即可. 比如,防止用户进行truncate *** 作,可以给如下权限:t_gi...

为阻止用户删除或清空表以及数据,给他少量的权限即可.
比如,可以给如下权限:
 MysqL教程

t_girl=# create role ytt3 with login connection limit 1 password 'ytt3';
create role
t_girl=# alter schema ytt owner to ytt3;
alter schema
t_girl=# grant select on all tables in schema ytt to ytt3;
grant

现在用新用户ytt3登陆并且执行truncate,发现被禁止.
 MysqL教程

bash-4.1$ psql -u ytt3 t_girl
psql (9.3.4)
type "help" for help.
t_girl=> truncate table j2;
error: permission denIEd for relation j2

当测试时,一般来说,管理员为了方便懒得去分配各种各样细的权限.
那么,在创建表时,就得给这张表来做对应的限制.
当然了,生产环境不建议这么做.MysqL教程

创建一个基于语句的触发器就可以:
 MysqL教程

t_girl=# sf prevent_truncate
create or replace function public.prevent_truncate()
 returns trigger
 language plpgsql
as $functio$
begin
raise exception 'prevent "%" to be truncated!',tg_table_schema||tg_table_name;
return new;
end;
$function$MysqL教程

t_girl=# d j2
        table "ytt.j2"
 column | type | modifIErs
--------+---------+-----------
 ID | integer |
 str2 | text |
triggers:
    trigger_truncate_before before truncate on j2 for each statement execute procedure ytt.prevent_truncate()MysqL教程

t_girl=#MysqL教程

t_girl=# truncate table j2;
error: prevent "ytt.j2" to be truncated!MysqL教程

这种方法也只是对于提供了这项功能的数据库才ok. 比如MysqL的触发器只提供了基于行的 *** 作,那么语句的 *** 作就不能触发了.
所以,如果在MysqL上来实现这点,就比较麻烦.
要么,就从权限入手,
 MysqL教程

MysqL> truncate table j2;
error 1142 (42000): drop command denIEd to user 'ytt3'@'localhost' for table 'j2'

要么,就对数据库的 *** 作用sproc封装起来,
 MysqL教程

+------------------------------------+
| error |
+------------------------------------+
| prevent t_girl.j2 to be truncated! |
+------------------------------------+
1 row in set (0.00 sec) 总结

以上是内存溢出为你收集整理的MYSQL数据库防止mysql表被清空的方法详解全部内容,希望文章能够帮你解决MYSQL数据库防止mysql表被清空的方法详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1158451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存