如何限制使用者能夠在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 常用的使用者以及檔案管理命令有哪些,並演示命令以及用法。
- 在sql*plus裡編輯SQL命令SQL
- SQL*PLUS命令, set命令大全SQL
- 在shell中執行SQL*Plus命令SQL
- 智慧數字經營的出現能夠解決哪些實際問題?
- sql_plus操作命令SQL
- 常用的sql*plus命令:SQL
- 學習Linux常見的開發命令有哪些?Linux
- 【sqlplus】SQL*Plus命令使用大全SQL
- 在Linux中,有哪些基本的 Vim 命令?Linux
- sql plus命令使用總結SQL
- SQL/PLUS 常用命令SQL
- sql*plus 常用命令SQL
- SQL/PLUS命令的使用大全SQL
- SQL*PLUS命令的使用大全SQL
- 詳解sql*plus spool命令SQL
- Android 開發有哪些新技術出現?Android
- 技術運維要從哪些方面出發?運維
- 奇怪 sqlplus中 host命令出現lsSQLSQL
- SQLPLUS命令列儲存輸出資訊SQL命令列
- CRM系統的優點有哪些?能夠處理哪些問題?
- Linux常見的開發命令有哪些?分類介紹!Linux
- 北鯤雲超算平臺能夠為CAE行業發展提供哪些支援?行業
- 限制SQLPLUS工具可執行的命令SQL
- 【實驗】使用SQL*Plus中set命令格式化SPOOL匯出的檔案SQL
- Linux使用者資訊查詢命令有哪些?linux運維命令學習Linux運維
- nodejs模組釋出及命令列程式開發NodeJS命令列
- 在Linux中,ls命令有哪些常用的選項?Linux
- Clean架構能夠解決哪些問題? - jbogard架構
- SQL PLUS命令使用大全(轉,特有用)SQL
- 定製sql*plus的幾條命令SQL
- SQL*Plus的行編輯命令(轉)SQL
- SQL*PLUS命令的使用大全(一)薦SQL
- SQL*PLUS命令的使用大全(zt)(轉)SQL
- Linux chattr命令有哪些作用?命令格式是什麼?Linux
- 使用pv命令限制SQL文字匯入速度SQL
- SQLPLUS 下輸入命令的字元長度限制SQL字元
- 伺服器重啟的命令有哪些伺服器