1.对用户的操作
--创建用户
CREATE USER TEST IDENTIFIED BY TIGER;
--查询创建的用户
SELECT * FROM ALL_USERS;
--删除用户 可选参数【CASCADE】,用来表示删除用户的同时删除其建立的实体
DROP USER TEST [CASCADE];
--修改用户的密码
ALTER USER system IDENTIFIED BY AnotherPass;
--查询所有管理员用户以及其对应口令(密文形式)
SELECT username,password FROM DBA_USERS;
--解锁用户scott
ALTER USER scott ACCOUNT UNLOCK;
--ALTER USER scott ACCOUNT LOCK;
--查询用户信息(得到USER#),并修改用户名 (后两句为强制写入数据文件和清除缓存数据字典信息,必须要)
SELECT user#,name,password FROM user$ WHERE name='TEST';
UPDATE USER$ SET name='TEST_BAK' WHERE USER#= NUMBER;
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL;
(1)Oracle提供了一部分默认用户,如下
用户名:sys 密码:安装时定义 SYSDBA或者SYSOPER登陆,但不能以NORMAL登陆
用户名:system 密码:manager SYSDBA或者NORMAL,但不能以SYSOPER登陆
用户名:scott 密码:tiger NORMAL,普通用户
用户名:aqadm 密码:aqadm SYSDBA或者NORMAL,高级队列管理员
用户名:Dbsnmp 密码:Dbsnmp SYSDBA或者NORMAL,复制管理员
(2)对SYS用户的锁定是无效的 USER$是一个存储所有用户的表,只有在SYS用户SYSDBA角色的权限下才可见。
2.对权限的操作
--授权系统权限 [WITH ADMIN OPTION]表示此用户可把此权限再授予其它用户或者角色,并且不受当前用户权限被收回的影响
GRANT CREATE SESSION TO TEST [WITH ADMIN OPTION];
--查看系统权限
SELECT * FROM dba_sys_privs WHERE GRANTEE='TEST';
SELECT * FROM dba_sys_privs WHERE GRANTEE IN ('CONNECT','RESCOURCE');
--查看用户所有系统权限
SELECT PRIVILEGE FROM dba_sys_privs WHERE GRANTEE='TEST' UNION
SELECT PRIVILEGE FROM dba_sys_privs WHERE GRANTEE IN (
SLECT GRANTED_ROLE FROM dba_role_privs WHERE GRANTEE = 'TEST');
--收回系统权限
REVOKE CREATE VIEW FROM TEST;
--授予对象权限 [WITH GRANT OPTION]表示此用户可把此权限再授予其它用户或者角色
GRANT SELECT ON STU TO TEST [WITH GRANT OPTION];
--查询对象权限
SELECT table_name,privilege FROM dba_tab_privs
WHERE GRANTEE='TEST';
--授予用户角色
GRANT RESOURCE TO TEST;
--收回用户权限
REVOKE UPDATE,DELETE ON STU FROM TEST;
(1)oracle其它的100多个系统权限,可通过查找数据字典system_privilege_map看到。
(2)在数据库安装之后,即自动预定义了3个角色:RESOURCE,CONNECT,DBA 方便数据库管理的向后兼容
DBA:拥有全部,是最高权限,只有DBA才能创建数据库结构
RESOURCE:拥有该权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:该权限只可以登录。不可创建实体
(3)数据对象与权限关系
3.对数据库角色的操作
--创建角色
CREATE ROLE STUROLE;
--设置角色口令
ALTER ROLE STUROLE IDENTIFIED BY PASS;
--为角色分配权限
GRANT CREATE ANY TABLE,CREATE VIEW TO STUROLE;
--查看角色信息
SELECT * FROM role_sys_privs WHERE ROLE='STUROLE';
SELECT * FROM DBA_ROLES WHERE ROLE='STUROLE';
--收回角色权限(无级联方式)
REVOKE CREATE VIEW FROM STUROLE;
--删除自定义角色
DROP ROLE STUROLE;
--启用/禁用角色
ALTER USER TEST DEFAULT ROLE ALL EXCEPT STUROLE;
SET ROLL STUROLE IDENTIFIED BY PASSWORD;
--显示用户所拥有的角色及权限
SELECT * FROM dba_role_privs WHERE GRANTEE='TEST';