《MYSQL數據庫防止mysql表被清空的方法詳解》要點:
本文介紹了MYSQL數據庫防止mysql表被清空的方法詳解,希望對您有用。如果有疑問,可以聯系我們。
為阻止用戶刪除或清空表以及數據,可以直接從權限下手,給他少量的權限即可.
比如,防止用戶進行truncate 操作, 可以給如下權限:
?MYSQL教程
現在用新用戶ytt3登陸并且執行truncate,發現被禁止.
?MYSQL教程
當測試時,一般來說,管理員為了方便懶得去分配各種各樣細的權限.
那么,在創建表時,就得給這張表來做對應的限制.
當然了,生產環境不建議這么做.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教程
要么,就對數據庫的操作用sproc封裝起來,
?MYSQL教程