⑴ sql server中的revoke cascade(用戶許可權回收問題)
如果不加,會出現像下面這種樣子的錯誤。
消息 4611,級別 16,狀態 1,第 1 行
若要撤消或拒絕可授予的特權,請指定 CASCADE 選項。
原因:
因為 U5可以轉讓insert許可權
也就是以前執行的是:
GRANT insert on sc TO u5 With Grant Option
那麼這個 u5 用戶登錄以後。
可以
GRANT insert on sc TO 其它的用戶。
revoke insert
on sc
from u5 cascade
目的是把 給 u5 的許可權回收回來, 同時把 u5 授權給其他用戶的許可權,也回收。
下面以一個例子來演示:
我的資料庫上面,有 A 與 B , 兩個用戶。
我首先用管理員帳戶,執行
GRANT SELECT ON Goods TO A With Grant Option
然後我用 A 用戶登錄。
執行了
1> GRANT SELECT ON Goods TO B With Grant Option
2> go
也就是 A 又給B 授權,允許B訪問 Goods表,且還能授權給別人。
現在回到管理員帳戶上
執行
REVOKE SELECT ON Goods FROM A CASCADE
從而把 A 的許可權收回, 同時也把 A 給 B賦 的許可權也收回。
那麼現在 A 和 B 都沒有許可權訪問 Goods 表了。
假如沒有 cascade 連帶刪除的話,那麼管理員把 A 的許可權收回了。 但是 B還有許可權。B還可以再把許可權給 A,還可以給 C,D,E,F,G。
沒有 cascade 的話,管理員要累死的。
⑵ 在mysql中,可以使用什麼語句來實現許可權的撤銷
有兩種方法,一種方法使用mysql的checktable和repairtable的sql語句,另一種方法是使用MySQL提供的多個myisamchk,isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。1.checktable和repairtable登陸mysql終端:mysql-uxxxxx-pdbnamechecktabletabTest;如果出現的結果說Status是OK,則不用修復,如果有Error,可以用:repairtabletabTest;進行修復,修復之後可以在用checktable命令來進行檢查。在新版本的phpMyAdmin裡面也可以使用check/repair的功能。2.myisamchk,isamchk其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為預設的數據表類型,這里以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:myisamchktablename.MYI進行檢測,如果需要修復的話,可以使用:myisamchk-oftablename.MYI關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL伺服器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL伺服器Shutdown掉。-----------------------------另外可以把下面的命令放在你的rc.local裡面啟動MySQL伺服器前:[-x/tmp/mysql.sock]&&/pathtochk/myisamchk-of/DATA_DIR/*/*.MYI其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對於使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對於使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL資料庫存放的位置。需要注意的時,如果你打算把這條命令放在你的rc.local裡面,必須確認在執行這條指令時MySQL伺服器必須沒有啟動!檢測修復所有資料庫(表)
⑶ 在SQL語言中,用於事務提交的語句是什麼,收回許可權的命令是什麼
提交事務:commit transaction;回滾事務:rollback transaction
⑷ SQL語言的GRANT和REVOKE語句主要是用來維護資料庫的
選C,SQL語言的GRANT和REVOKE語句主要是用來維護資料庫的安全性。
GRANT 和 REVOKE 兩個語句分別是授予許可權和回收許可權語句,具有對 SQL語言的安全控制功能。
1、授權命令 grant,語法格式(SQL語句不區分大小寫):Grant <許可權> on 表名[(列名)] to 用戶 With grant option
或 GRANT <許可權> ON <數據對象> FROM <資料庫用戶>
//數據對象可以是表名或列名
//許可權表示對表的操作,如select,update,insert,delete
2、註:授權命令是由資料庫管理員使用的,若給用戶分配許可權時帶With grant option子句,
則普通用戶獲權後,可把自己的許可權授予其他用戶。
(4)級聯收回多個許可權的SQL語句擴展閱讀:
回收revoke
revoke語句:收回授予的許可權
revoke一般格式:
revoke <許可權> [,<許可權>]…
on <對象類型 > <對象名> [,<對象類型 > <對象名>]..
from <用戶> [,<用戶>]…
[cascade | restrict];
例子:收回所有用戶對表SC的查詢許可權
revoke select
on table sc
from public;
⑸ 如何理解SQL Server中許可權是如何級聯回收的
系統許可權不會被級聯回收。
對象許可權會被級聯回收。
例如:
收回用戶li對表employee的查詢許可權,同時級聯收回li授予其他用戶的該許可權。
SQL語句為:
WITH CHECK OPTION select ON TABLE employee FROM li CASCADE