一、查看用戶及權限
1.查詢所有用戶:
1.1、查看所有用戶基本信息
select * from all_users;
1.2、查看所有用戶相信信息
select * from dba_users;
2.查看用戶權限
2.1 查看所有用戶
SELECT * FROM DBA_USERS; SELECT * FROM ALL_USERS; SELECT * FROM USER_USERS;
2.2 查看用戶或角色所擁有的角色
SELECT * FROM DBA_ROLE_PRIVS; SELECT * FROM USER_ROLE_PRIVS;
2.3 查看用戶對象或角色權限
SELECT * FROM DBA_TAB_PRIVS; SELECT * FROM ALL_TAB_PRIVS; SELECT * FROM USER_TAB_PRIVS;
2.4 查看所有角色
SELECT * FROM DBA_ROLES;
2.5 查看用戶系統權限
SELECT * FROM DBA_SYS_PRIVS; SELECT * FROM USER_SYS_PRIVS;
2.6 遇到no privileges on tablespace ‘tablespace ‘
alter user userquota 10M[unlimited] on tablespace;
二、創建用戶並授予權限
1、創建用戶
創建用戶與創建的表空間文件形成映射關系(用戶名為zldc,密碼為zldc),及創建用戶並設置用戶表空間
CREATE USER zldc IDENTIFIED BY zldc DEFAULT TABLESPACE zldc TEMPORARY TABLESPACE zldc_temp;
附加:
1).更改用戶密碼
alter user username identified by passwd;
2).解鎖用戶
ALTER USER 用戶名 ACCOUNT UNLOCK;
2.1)、那么遇到這種用戶會被鎖的情況,我們可以設置用戶密碼無限次嘗試登錄,而該用戶不會被鎖定:
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
2.2)、另外,做項目運維的小伙伴經常遇到數據庫用戶密碼過期的情況,要定期去修改密碼很麻煩,那么我們可以設置用戶密碼不過期:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
2、添加權限
首先授權用戶testuser兩個基本的角色權限
CONNECT角色: –是授予最終用戶的典型權利,最基本的 CREATE SESSION –建立會話 RESOURCE角色: –是授予開發人員的 CREATE CLUSTER –建立聚簇 CREATE PROCEDURE –建立過程 CREATE SEQUENCE –建立序列 CREATE TABLE –建表 CREATE TRIGGER –建立觸發器 CREATE TYPE –建立類型 CREATE OPERATOR –創建操作者 CREATE INDEXTYPE –創建索引類型 CREATE TABLE –創建表
參考:
GRANT CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE, ALTER ANY TABLE, ALTER ANY PROCEDURE, DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE, SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO username;
授權角色給用戶的sql語句:
GRANT role TO username;
實例:
grant connect,resource,dba to zldc; grant create session to zldc; GRANT SELECT ON "DNINMSV31"."V_DNDEVICE" TO zldc;
附:授予某用戶所有表的只讀權限:
select 'grant select on '||owner||'.'||object_name||' to username;' from dba_objects where owner in ('databasename') and object_type='TABLE';
或:
1.創建角色
CREATE ROLE SELECT_ROLE
2.給角色分配權限
grant SELECT ANY DICTIONARY to SELECT_ROLE; grant SELECT ANY TABLE to SELECT_ROLE; grant SELECT ANY TRANSACTION to SELECT_ROLE; grant SELECT ANY SEQUENCE to SELECT_ROLE;
3.把角色賦予指定賬戶
grant SELECT_ROLE to user;
4.刪除角色
drop role SELECT_ROLE;
5.檢查角色的權限
select * from dba_sys_privs where grantee='SELECT_ROLE'
測試權限的時候需要加上用戶的對象例如
select count(*) from hr.ex_user;
3、創建同義詞供對方公司系統訪問:
CREATE SYNONYM V_DNDEVICE FOR DNINMSV31.V_DNDEVICE; CREATE SYNONYM V_DNSUBNE FOR DNINMSV31.V_DNSUBNE; CREATE SYNONYM V_DNPACKAGE FOR DNINMSV31.V_DNPACKAGE; CREATE SYNONYM V_DNPORT FOR DNINMSV31.V_DNPORT;
解釋:第三方的系統直接通過這個同義詞就可以訪問到用戶DNINMSV31中的視圖,這也是對系統安全的一種保護措施:第三方系統登錄后,只能看到其同義詞,其他的都不會訪問得到
4、最后還要對NORTHBOUND用戶進行連接數的限制,以免第三方無限制的連接數據庫,造成數據庫SESSION暴漲:
conn / as sysdba alter system set resource_limite=true scope=both sid='*';
5、新建profile, 初始限制為1 ,用於測試。
create profile third_user limit SESSIONS_PER_USER 1 FAILED_LOGIN_ATTEMPTS unlimited; alter user NORTHBOUND profile third_user;
6、將會話數調整到30
alter profile third_user limit SESSIONS_PER_USER 30;
三、更改用戶的默認表空間
1、修改用戶的永久表空間:
alter user user default tablespace tablespaceName;
其中第二個user為要操作的用戶,tablespaceName為將要設置的默認表空間名稱。
2、修改新添加的用戶的默認表空間:
alter database default tablespace tablespaceName;
這樣新建立的用戶的默認表空間就為tablespaceName。
四、刪除用戶:
1、刪除用戶
drop user zldc cascade;
如果有用戶和這個庫建立連接,這里刪除會提示失敗:ORA-01940: cannot drop a user that is currently connected,需要先kill掉這個用戶會話才能刪除用戶及用戶下的數據
