创建用户:
CREATE USER user_name IDENTIFIED BY password
[DEFAULT TABLESPACE default_tablespace]
[temporary TABLESPACE temporary_tablespace]
修改用户密码:
ALTER USER jason IDENTIFIED BY marcus
PASSWORD 修改当前登录用户的密码。
删除用户:
DROP USER jason
向用户授予系统特权:
GRANT CREATE SESSION,EXECUTE ANY PROCEDURE TO steve WITH ADMIN OPTION
WITH ADMIN OPTION :所授权的用户可以将这种特权再授予其他用户。
检查授予用户的系统特权:
SELECT *
FROM user_sys_privs;
ORDER BY privilege;
撤销用户的系统特权:
REVOKE CREATE TABLE FROM steve;
向用户授予对象特权:
GRANT SELECT,INSERT,UPDATE ON store.product s TO steve WITH GRANT OPTION;(WITH GRANT OPTION所授权的用户就可以把这种特权)
撤销用户的对象特权:
REVOKE INSERT ON products FROM steve;
检查某个用户对哪些表向其他用户开放了哪些对象特权。
SELECT *
FROM user_tab_privs_made (user_col_privs_made列)
WHERE table_name = 'PRODUCTS';
检查某个用户被授予了哪些表上的哪些对象特权。
SELECT *
FROM user_tab_privs_recd(user_col_privs_recd某个用户被授予了哪些列的对象特权)
同名对象
CREATE SYNONYM customers FOR store.customers;
公共同名对象
CREATE PUBLIC SYNONYM products FOR store.products;
创建角色
CREATE ROLE product_manager;
CREATE ROLE hr_manager;
CREATE ROLE overall_manager IDENTIFIED BY manger_password
为角色授权
GRANT SELECT,INSERT,UPDATE,DELETE ON product_types TO product_manager;
GRANT SELECT,INSERT,UPDATE,DELETE ON products TO product_manager;
GRANT SELECT,INSERT,UPDATE,DELETE ON salary_grades TO hr_manager;
GRANT SELECT,INSERT,UPDATE,DELETE ON employees TO hr_manager;
GRANT CREATE USER TO hr_manager;
GRANT product_manager, hr_manager TO overall_manager;
将角色授予用户
GRANT overall_manager TO steve;
检查授予用户的角色
SELECT * FROM user_role_privs;
检查授予角色的系统特权
SELECT * FROM role_sys_privs;
检查授予角色的对象特权
SELECT * FROM role_tab_privs
默认角色:用户连接到数据库上时,就可以自动使用这种角色了
ALTER ROLE修改,使其变为非默认角色。
ALTER USER steve DEFAULT ROLE ALL EXCEPT overall_manager;
启用角色
SET ROLE overall_manager IDENTIFIED BY manager_password
清空角色的设置
SET ROLE NONE
将角色设置为除overall_manager之外的任何角色
SET ROLE ALL EXCEPT overall_manager
撤销角色
REVOKE overall_manager FROM steve;
从角色中撤销特权
REVOKE ALL ON products FROM product_manager;
删除角色
DROP ROLE overall_manager;
DROP ROLE product_manager;
DROP ROLE hr_manager;
审计 跟踪数据库操作
执行审计需要的特权:
审计高级别操作 GRANT AUDIT SYSTEM TO store
跟踪特定数据库对象上的操作时,要么拥有AUDIT ANY特权,要么数据库对象必须在他们的模式中。 GRANT AUDIT ANY TO store
USER _AUDIT_TRAIL视图查看对当前登录用户的审计跟踪信息。
SELECT * FROM user_audit_trail WHERE audit_option = 'CREATE TABLE';
例:AUDIT SELECT TABLE,INSERT TABLE,UPDATE TABLE,DELETE TABLE BY store,steve;
AUDIT SELECT ON store.products;
AUDIT ALL ON store.employees;
WHENEVER SUCCESSFUL 当语句执行成功时进行审计 AUDIT INSERT TABLE WHENEVER NOT SUCCESSFUL
WHENEVER NOT SUCCESSFUL 当语句执行不成功时进行审计 AUDIT INSERT TABLE WHENEVER SUCCESSFUL
BY SESSION 对同一个用户数据库会话期间所发出的同一类语句只有一个审计记录。
BY ACCESS每次发出的同一类语句都有一个审计记录,与用户会话无关。
审计跟踪视图
USER_AUDIT_OBJECT 当前用户可访问的所有对象的审计记录
USER_AUDIT_SESSION 当前用户连接到数据库和断开数据库连接的审计记录
USER_AUDIT_STATEMENT 当前用户发出的GRANT,REVOKE,AUDIT,NOAUDIT,ALTER SYSTEM语句的审计记录
USER_AUDIT_TRAIL 与当前用户相关的所有审计跟踪条目