如何限制使用者能夠在SQL*Plus發出哪些命令以及不能發出哪些命令
在system schema下有個表:product_user_profile,這個表很有意思。能夠控制哪些使用者在SQL*Plus裡能夠執行哪些命令以及不能執行哪些命令,這些命令既包括SQL命令,也包括SQL*Plus本身的命令,比如set、exit等。
先來看看該表的結構:
SQL> connect system/oracle
Connected.
SQL> desc product_user_profile;
Name Null? Type
----------------------------------------- -------- ----------------------------
PRODUCT NOT NULL VARCHAR2(30)
USERID VARCHAR2(30)
ATTRIBUTE VARCHAR2(240)
SCOPE VARCHAR2(240)
NUMERIC_VALUE NUMBER(15,2)
CHAR_VALUE VARCHAR2(240)
DATE_VALUE DATE
LONG_VALUE LONG
使用該表可以限制的SQL*Plus操作包括:COPY EXIT PASSWORD SAVE START
EDIT GET QUIT SET
EXECUTE HOST RUN SPOOL
而可以限制的SQL操作包括:
ALTER DELETE NOAUDIT SET ROLE
ANALYZE DROP RENAME SET TRANSACTION
AUDIT GRANT REVOKE TRUNCATE
CONNECT INSERT SELECT UPDATE
CREATE LOCK SET CONSTRAINTS
你甚至還可以禁止PL/SQL操作:
BEGIN DECLARE
比如,我要限制HR使用者不能在SQL*Plus裡發出insert命令,則
SQL> insert into product_user_profile values('SQL*Plus','HR','INSERT',null,null,'DISABLED',null,null);
1 row created.
SQL> commit;
Commit complete.
SQL> select product,userid,attribute,char_value from product_user_profile;
PRODUCT USERID
------------------------------ ------------------------------
ATTRIBUTE
--------------------------------------------------------------------------------
CHAR_VALUE
--------------------------------------------------------------------------------
SQL*Plus HR
INSERT
DISABLED
如果插入的char_value為'ENABLED'則表示可以進行某種操作。然後來測試一下:
SQL> connect hr/hr
Connected.
SQL> insert into jobs values('A','A',1,1);
SP2-0544: Command "insert" disabled in Product User Profile
可以看到,HR使用者無法通過SQL*Plus進行insert了。
要讓HR使用者能夠通過SQL*Plus進行insert,則直接將product_user_profile裡的記錄刪除即可:
SQL> delete product_user_profile where userid='HR' and product='SQL*Plus';
1 row deleted.
SQL> commit;
Commit complete.
然後再次測試hr的insert操作:
SQL> insert into jobs values('A','A',1,1);
1 row created.
SQL> commit;
Commit complete.
先來看看該表的結構:
SQL> connect system/oracle
Connected.
SQL> desc product_user_profile;
Name Null? Type
----------------------------------------- -------- ----------------------------
PRODUCT NOT NULL VARCHAR2(30)
USERID VARCHAR2(30)
ATTRIBUTE VARCHAR2(240)
SCOPE VARCHAR2(240)
NUMERIC_VALUE NUMBER(15,2)
CHAR_VALUE VARCHAR2(240)
DATE_VALUE DATE
LONG_VALUE LONG
使用該表可以限制的SQL*Plus操作包括:
EDIT GET QUIT SET
EXECUTE HOST RUN SPOOL
而可以限制的SQL操作包括:
ALTER DELETE NOAUDIT SET ROLE
ANALYZE DROP RENAME SET TRANSACTION
AUDIT GRANT REVOKE TRUNCATE
CONNECT INSERT SELECT UPDATE
CREATE LOCK SET CONSTRAINTS
你甚至還可以禁止PL/SQL操作:
BEGIN DECLARE
比如,我要限制HR使用者不能在SQL*Plus裡發出insert命令,則
SQL> insert into product_user_profile values('SQL*Plus','HR','INSERT',null,null,'DISABLED',null,null);
1 row created.
SQL> commit;
Commit complete.
SQL> select product,userid,attribute,char_value from product_user_profile;
PRODUCT USERID
------------------------------ ------------------------------
ATTRIBUTE
--------------------------------------------------------------------------------
CHAR_VALUE
--------------------------------------------------------------------------------
SQL*Plus HR
INSERT
DISABLED
如果插入的char_value為'ENABLED'則表示可以進行某種操作。然後來測試一下:
SQL> connect hr/hr
Connected.
SQL> insert into jobs values('A','A',1,1);
SP2-0544: Command "insert" disabled in Product User Profile
可以看到,HR使用者無法通過SQL*Plus進行insert了。
要讓HR使用者能夠通過SQL*Plus進行insert,則直接將product_user_profile裡的記錄刪除即可:
SQL> delete product_user_profile where userid='HR' and product='SQL*Plus';
1 row deleted.
SQL> commit;
Commit complete.
然後再次測試hr的insert操作:
SQL> insert into jobs values('A','A',1,1);
1 row created.
SQL> commit;
Commit complete.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9842/viewspace-468355/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 常用的使用者以及檔案管理命令有哪些,並演示命令以及用法。
- 學習Linux常見的開發命令有哪些?Linux
- 在Linux中,有哪些基本的 Vim 命令?Linux
- 智慧數字經營的出現能夠解決哪些實際問題?
- 1.3.3.5.1. SQL*Plus 連線命令語法SQL
- Linux使用者資訊查詢命令有哪些?linux運維命令學習Linux運維
- 使用pv命令限制SQL文字匯入速度SQL
- CRM能夠帶來哪些幫助?
- Linux常見的開發命令有哪些?分類介紹!Linux
- 在Linux中,ls命令有哪些常用的選項?Linux
- Linux chattr命令有哪些作用?命令格式是什麼?Linux
- 技術運維要從哪些方面出發?運維
- CRM系統的優點有哪些?能夠處理哪些問題?
- ip命令網路物件常見操作命令有哪些?如何學習linux語言物件Linux
- 北鯤雲超算平臺能夠為CAE行業發展提供哪些支援?行業
- 在命令列上輸出進度條的原理命令列
- 如何用python3輸出dos命令?Python
- Linux中連線埠命令有哪些?Linux
- Linux技術相關命令有哪些Linux
- 伺服器重啟的命令有哪些伺服器
- Clean架構能夠解決哪些問題? - jbogard架構
- 在Linux中,哪⼀個bash內建命令能夠進行數學運算?Linux
- 萬能的Linux幫助命令有哪些?linux運維入門基礎Linux運維
- Linux命令中互動式命令都有哪些?linux運維基礎Linux運維
- 如何檢視Linux系統版本?常用命令有哪些?Linux
- Linux:mount命令出現Host is down如何解決Linux
- Linux系統中使用者日誌的常用命令有哪些?Linux
- Linux檢視檔案的命令有哪些?Linux
- 學習Linux最常用的命令有哪些?Linux
- 在opendaylight專案開發時,執行maven命令生成專案骨架時,出現錯誤。Maven
- top命令輸出詳解
- 從哪些方面能夠判別ERP的好壞?
- 群暉 Synology 讓出80和443埠 並 使當前使用者能執行docker命令Docker
- Linux程式基礎命令有哪些?Linux運維命令入門基礎Linux運維
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- 在一行中輸出能夠組成的最小的數
- Linux系統中expect該如何使用?有哪些常用命令?Linux
- 如何在Linux中如何限制對su命令的訪問Linux