Oracle笔记:用户、系统权限、角色

用户

查看Oracle中的用户

SQL> select username,account_status,default_tablespace from dba_users;

USERNAME                       ACCOUNT_STATUS                   DEFAULT_TABLESPACE
------------------------------ -------------------------------- ------------------------------
MGMT_VIEW                      OPEN                             SYSTEM
SYS                            OPEN                             SYSTEM
SYSTEM                         OPEN                             SYSTEM
DBSNMP                         OPEN                             SYSAUX
SYSMAN                         OPEN                             SYSAUX
SCOTT                          OPEN                             USERS
SH                             OPEN                             USERS
TEST                           OPEN                             USERS
OUTLN                          EXPIRED & LOCKED                 SYSTEM
FLOWS_FILES                    EXPIRED & LOCKED                 SYSAUX
MDSYS                          EXPIRED & LOCKED                 SYSAUX

USERNAME                       ACCOUNT_STATUS                   DEFAULT_TABLESPACE
------------------------------ -------------------------------- ------------------------------
ORDSYS                         EXPIRED & LOCKED                 SYSAUX
EXFSYS                         EXPIRED & LOCKED                 SYSAUX
WMSYS                          EXPIRED & LOCKED                 SYSAUX
APPQOSSYS                      EXPIRED & LOCKED                 SYSAUX
APEX_030200                    EXPIRED & LOCKED                 SYSAUX
OWBSYS_AUDIT                   EXPIRED & LOCKED                 SYSAUX
ORDDATA                        EXPIRED & LOCKED                 SYSAUX
CTXSYS                         EXPIRED & LOCKED                 SYSAUX
ANONYMOUS                      EXPIRED & LOCKED                 SYSAUX
XDB                            EXPIRED & LOCKED                 SYSAUX
ORDPLUGINS                     EXPIRED & LOCKED                 SYSAUX

USERNAME                       ACCOUNT_STATUS                   DEFAULT_TABLESPACE
------------------------------ -------------------------------- ------------------------------
OWBSYS                         EXPIRED & LOCKED                 SYSAUX
SI_INFORMTN_SCHEMA             EXPIRED & LOCKED                 SYSAUX
OLAPSYS                        EXPIRED & LOCKED                 SYSAUX
ORACLE_OCM                     EXPIRED & LOCKED                 USERS
XS$NULL                        EXPIRED & LOCKED                 USERS
BI                             EXPIRED & LOCKED                 USERS
PM                             EXPIRED & LOCKED                 USERS
MDDATA                         EXPIRED & LOCKED                 USERS
IX                             EXPIRED & LOCKED                 USERS
DIP                            EXPIRED & LOCKED                 USERS
OE                             EXPIRED & LOCKED                 USERS

USERNAME                       ACCOUNT_STATUS                   DEFAULT_TABLESPACE
------------------------------ -------------------------------- ------------------------------
APEX_PUBLIC_USER               EXPIRED & LOCKED                 USERS
HR                             EXPIRED & LOCKED                 USERS
SPATIAL_CSW_ADMIN_USR          EXPIRED & LOCKED                 USERS
SPATIAL_WFS_ADMIN_USR          EXPIRED & LOCKED                 USERS

已选择37行。

注:EXPIRED & LOCKED 表示账号则是过期和锁定,此状态下的用户不能登录数据库

  • 系统用户
    system(权限仅次于sys用户,其角色是sysoper数据库操作员)和sys(数据库中的最高权限者,其角色是sysdba,数据库管理者),
    在权限范围上,sys可以创建数据库,而system不可以。

常见问题:利用sys用户修改system账户密码

-- (1)利用sys账号以DBA角色登录数据库
sqlplus /@orcl as sysdba;
-- (2)检查数据库名称
show parameter db_name;
-- (3) 查看此时用户system的账户状态
select username,account_status from dba_users
where lower(username)='system';
-- (4)修改system的属性,首先将其从锁定状态中恢复
alter user system account unlock;
-- (5)再次查看用户system的账户状态
select username,account_status from dba_users
where lower(username)='system';
-- (6)重新设置密码
alter user system identified by abc123;
  • 创建用户用法
create user user_name identified by user_password;
--此时还不能登录、查询等,需要进一步授权

系统权限

权限的最终作用对象是用户。

-- 查看系统权限
select distinct privilege from dba_sys_privs;
--oracle11g中有202个

比较常用的系统权限:
常用的系统权限

  • 授权
    grant 权限 (on 对象名)to 用户 (with grant option 是否允许用户再授权);
-- 使用数据字典user_tab_privs_made查看是否授权成功
select * from user_tab_privs_made;

例:查看scott用户的权限

--查看当前用户的权限
select * from session_privs;

SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE ANY VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
DEBUG CONNECT SESSION

已选择12行。
  • 回收权限
    revoke 权限 (on 对象名)from 用户

角色

引入角色的原因

方便权限的管理;动态的权限管理;提高系统的额效率
角色是指系统权限或者对象权限的集合。Oracle允许首先创建一个角色,然后将角色赋予给用户,从而实现用户权限的添加。

--(1) 创建角色
create role role_emp_test;
--(2)权限分配
grant select on scott.emp to role_emp_test;
/*
查看是否创建成功?
SQL> select * from dba_roles where role='ROLE_EMP_TEST';

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
ROLE_EMP_TEST                  NO       NONE
*/
--查看角色的权限信息
select table_name,grantee,grantor,privilege from dba_tab_privs where table_name='SCOTT.EMP';
--(3)将角色赋予用户scott
grant role_emp_test to scott;
  • 查看当前用户的默认角色信息
SQL> select * from user_role_privs;

USERNAME                       GRANTED_ROLE                   ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SCOTT                          CONNECT                        NO  YES NO
SCOTT                          RESOURCE                       NO  YES NO
SCOTT                          ROLE_EMP_TEST                  NO  YES NO
禁止和激活角色

禁止一个角色将临时地从用户回收该角色,但是角色地定义任然存在于用户地数据字典中。而激活一个角色将临时地授予该角色。
使用set role命令来激活(开启)和禁止(关闭)角色

-- 查看scott用户地权限
SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE ANY VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
DEBUG CONNECT SESSION

已选择12行。
--禁止scott用户由角色赋予地系统权限
SQL> set role None;

角色集
-- 再次查看用户权限
SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
UNLIMITED TABLESPACE
CREATE ANY VIEW
DEBUG CONNECT SESSION

-- 激活
SQL> set role all;

角色集
-- 再次确认
SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE ANY VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
DEBUG CONNECT SESSION

已选择12行。

角色的回收和删除

当不再需要角色所授予的权限后,可以使用revoke命令从用户那里回收角色。
从用户那里回收角色需要with admin optiongrant any role 权限。

SQL> --回收角色role_emp_test
-- 如果涉及多个用户,可用public替换scott
SQL> revoke role_emp_test from scott;

撤销成功。

SQL> conn scott
输入口令:
已连接。
SQL> select * from user_role_privs;

USERNAME                       GRANTED_ROLE                   ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SCOTT                          CONNECT                        NO  YES NO
SCOTT                          RESOURCE                       NO  YES NO
  • 删除角色
SQL> conn / as sysdba;
已连接。
SQL> drop role role_emp_test;

角色已删除。

参考:
21天学通ORACLE
ORACLE数据库管理:从入门到精通

posted @ 2020-04-14 00:06  LgRun  阅读(208)  评论(0编辑  收藏  举报