Oracle用户和权限(基础操作)

在这里插入图片描述
Oracle DB 关于CONNECT、RESOURCE 和DBA 角色权限

Oracle的默认数据库用户

syssystemscott

sys

数据库中所有数据字典表视图都存储在SYS模式中。

SYS用户主要用来维护系统信息管理实例

SYS用户作用如同Linux中的root用户,SYS用户大于Oracle数据库中所有用户权限

数据字典存放的是整个数据库最基本最基本的信息,的信息,的信息 …。

动态视图Oracle数据库时时刻刻运行的情况都在动态视图中有记载。

动态视图是由sys用户维护的。

SYSTEM

SYSTEM是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表视图

通常通过SYSTEM用户管理数据库用户权限存储等。

SYSTEM做普通的维护工作,比如创建表以后查看执行计划

SCOTT

示范账户,就一个普通用户

创建新用户

 create user test1 identified by test1;

权限

权限有两种类型

  1. 系统权限允许用户执行某些数据库操作,如创建表就是一个系统权限

  2. 对象权限允许用户对数据库对象(如视图序列等)执行特定操作

系统权限

#不用用户登录
sqlplus/nolog

#没有create session权限
SQL> conn test1/test1@orcl
ERROR:
ORA-01045: user TEST1 lacks CREATE SESSION privilege; logon denied

conn system/password
grant create session to test1;

conn test1/test1
#权限不足 没有创建表的权限
SQL> create table student(sno number);
create table student(sno number)
*
ERROR at line 1:
ORA-01031: insufficient privileges


exit 

sqlplus system/password

grant create table to test1;
#无限制使用表空间权限
grant unlimited tablespace to test1;

conn test1/test1

SQL> create table student(sno number);

Table created.

给其他用户创建表

sqlplus system/password

#可以创建任何一张表(any)
grant create any table to test1;

conn test1/test1

create table scott.a(id int);

conn scott/scott

#查看所有表
select * from tab;

查看该用户已被授予权限

select * from dba_sys_privs d where d.grantee = 'TEST1';

SQL> select * from dba_sys_privs d where d.grantee = 'TEST1';
GRANTEE                        PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
TEST1                          UNLIMITED TABLESPACE                     NO
TEST1                          CREATE TABLE                             NO
TEST1                          CREATE SESSION                           NO
TEST1                          CREATE ANY TABLE                         NO

with admin option

sqlplus system/password

create user test2 identified by test2;

#with admin option 代表着test2可以把create session传给其他人。
grant create session to test2 with admin option ;

create user test3 identified by test3;

sqlplus test2/test2@orcl

grant create session to test3;

exit

sqlplus test3/test3@orcl
成功!

此时回收test2权限。

sqlplus system/password

revoke create session from test2;

exit
#失败!
sqlplus test2/test2@orcl
#成功!
sqlplus test3/test3@orcl

对象权限

访问某个用户特定对象(如视图等)的对象权限

#允许用户查询EMP表中的记录
grant select on scott.emp to wang;

#允许用户更新EMP表中的记录
grant update on scott.emp to wang;

#允许用户增删改查EMP表中记录
grant all on scott.emp to wang;

sqlplus test3/test3@orcl
select * from scott.emp;
#不是不存在而是没有权限!
SQL> select * from scott.emp;
select * from scott.emp
                    *
ERROR at line 1:
ORA-00942: table or view does not exist

sqlplus scott/scott@orcl
grant select on emp to test3;

注意:9i以后,system和用户本身的表都可以授权给别人

9i只能用户本身的表授权给别人

sqlplus system/password@orcl
grant select on scott.emp to test1;

角色管理

在这里插入图片描述

DBA包含了connectresource角色的权限。

在这里插入图片描述

创建角色

create role role1;

grant create session,create table to role1;

create user test8 identified by test8;
#把该角色的所有权限授予test8用户
grant role1 to test8;

特定的角色(重点)

create user test9 identified by test9;

grant connect,resource to test9;

#成功!
conn test9/test9
#成功!
create table t1(id int);

查看角色到底包含什么权限(还是用这个把!)

sqlplus system/password

select * from dba_sys_privs d where d.grantee = 'CONNECT';
SQL> select * from dba_sys_privs d where d.grantee = 'CONNECT';
GRANTEE                        PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
CONNECT                        CREATE SESSION                           NO

select * from dba_sys_privs d where d.grantee = 'RESOURCE';
SQL> select * from dba_sys_privs d where d.grantee = 'RESOURCE';
GRANTEE                        PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
RESOURCE                       CREATE TRIGGER                           NO
RESOURCE                       CREATE SEQUENCE                          NO
RESOURCE                       CREATE TYPE                              NO
RESOURCE                       CREATE PROCEDURE                         NO
RESOURCE                       CREATE CLUSTER                           NO
RESOURCE                       CREATE OPERATOR                          NO
RESOURCE                       CREATE INDEXTYPE                         NO
RESOURCE                       CREATE TABLE                             NO
8 rows selected

SQL> select * from dba_sys_privs d where d.grantee = 'DBA';
GRANTEE                        PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
DBA                            DROP ANY CUBE BUILD PROCESS              YES
DBA                            CREATE CUBE                              YES
DBA                            ALTER ANY CUBE DIMENSION                 YES
DBA                            ALTER ANY MINING MODEL                   YES
DBA                            DROP ANY MINING MODEL                    YES
DBA                            DROP ANY EDITION                         YES
DBA                            CHANGE NOTIFICATION                      YES
DBA                            ADMINISTER ANY SQL TUNING SET            YES
DBA                            ALTER ANY SQL PROFILE                    YES
DBA                            CREATE RULE                              YES
DBA                            EXPORT FULL DATABASE                     YES
DBA                            EXECUTE ANY EVALUATION CONTEXT           YES
DBA                            DEQUEUE ANY QUEUE                        YES
DBA                            DROP ANY INDEXTYPE                       YES
DBA                            ALTER ANY INDEXTYPE                      YES
DBA                            EXECUTE ANY LIBRARY                      YES
DBA                            CREATE ANY LIBRARY                       YES
DBA                            CREATE ANY DIRECTORY                     YES
DBA                            ALTER PROFILE                            YES
DBA                            EXECUTE ANY PROCEDURE                    YES
GRANTEE                        PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
DBA                            CREATE ROLE                              YES
....

查看系统空间有多少个角色

select * from dba_roles;

查看角色有的系统权限

select * from role_sys_privs r where r.role='ROLE1';

查看角色有的对象权限

select * from dba_tab_privs where rownum<5;

更改口令(密码)

alter user test1 identified by test2;

删除用户

drop user test1 cascade;
#cascade 
#代表如果用户已经建了有表了。
#把用户删除掉就说把用户和表一起删除掉!

sqlplus test1/test1@orcl

create table t1(id int);

insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);


sqlplus system/password@orcl
select * from test1.t1;

drop user test1 cascade;
select * from test1.t1;
#表也被删除了!
SQL> select * from test1.t1;
select * from test1.t1
                    *
ERROR at line 1:
ORA-00942: table or view does not exist

有一个大胆的想法:

sqlplus system/password@orcl
select * from test1.t1;

drop user test1;sqlplus system/password@orcl
create user test1 identified by test1;

grant connect,resource to test1;
conn test1/test1
show user;
create table t1(id int);

insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);

sqlplus system/password@orcl
select * from test1.t1;

drop user test1;
#得带上这个`CASCADE`
drop user test1;
*
ERROR at line 1:
ORA-01922: CASCADE must be specified to drop 'TEST1'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值