《MYSQL數(shù)據(jù)庫防止mysql表被清空的方法詳解》要點:
本文介紹了MYSQL數(shù)據(jù)庫防止mysql表被清空的方法詳解,希望對您有用。如果有疑問,可以聯(lián)系我們。
為阻止用戶刪除或清空表以及數(shù)據(jù),可以直接從權(quán)限下手,給他少量的權(quán)限即可.
比如,防止用戶進行truncate 操作, 可以給如下權(quán)限:
?MYSQL教程
現(xiàn)在用新用戶ytt3登陸并且執(zhí)行truncate,發(fā)現(xiàn)被禁止.
?MYSQL教程
當(dāng)測試時,一般來說,管理員為了方便懶得去分配各種各樣細的權(quán)限.
那么,在創(chuàng)建表時,就得給這張表來做對應(yīng)的限制.
當(dāng)然了,生產(chǎn)環(huán)境不建議這么做.MYSQL教程
創(chuàng)建一個基于語句的觸發(fā)器就可以:
?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教程
這種方法也只是對于提供了這項功能的數(shù)據(jù)庫才ok. 比如mysql的觸發(fā)器只提供了基于行的操作,那么語句的操作就不能觸發(fā)了.
所以,如果在mysql上來實現(xiàn)這點,就比較麻煩.
要么,就從權(quán)限入手,
?MYSQL教程
要么,就對數(shù)據(jù)庫的操作用sproc封裝起來,
?MYSQL教程
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/6455.html