12、SQL--控制用户权限(含练习)

12、SQL--控制用户权限(含练习)_第1张图片

 

一、控制用户权限:

 

1如果新建一个用户名,在用此用户名登录后,创建新表会权限不足,需要设置系统权限—CREATE ANY TABLE

12、SQL--控制用户权限(含练习)_第2张图片

 

将表一的select权限赋给表二,那么就可以在表二中进行查询表一的操作。

 

2、系统权限:

12、SQL--控制用户权限(含练习)_第3张图片

 

数据库管理员(DBA)。

 

 

二、使用命令行的方式实现在控制台中的操作:(在Oracle企业管理器中可查)

 

1、命令行方式创建用户:(CREATE USER)

12、SQL--控制用户权限(含练习)_第4张图片

 

创建用户必须使用是DBA的用户进行登录,本人用System。

(1)、创建新用户:

create user atguigu

identified by atguigu

 

(2)、创建成功后登录一下,出现错误

12、SQL--控制用户权限(含练习)_第5张图片

 

2、命令行方式创建完成后不可以直接登录,必须赋予(GRANT)系统权限:

12、SQL--控制用户权限(含练习)_第6张图片

Grant:授予。

GRABNT 权限 to 用户;

(1)、授予新建的用户登录的权限:(grant  。。。 to user

grant create session

to atguigu

这样就可以登录了。

 

(2)、授予新建的用户建表的权限

grant create table

to atguigu

 

(3)、为表空间声明一个大小:

12、SQL--控制用户权限(含练习)_第7张图片

 

alter user atguigu quota 5m

on users

(1)(2)(3)都是在DBA(system表)中操作的。

 

(4)、然后就可以用新建的用户登录,并创建表了:

create table t1(id number(10))

 

(5)、不能再新建的用户中声明表的大小,因为它没有权限:

alter user atguigu quota unlimited

on users

ORA-01031: 权限不足

 

3、新建的用户可以修改自己的登录密码:

12、SQL--控制用户权限(含练习)_第8张图片

--将密码atguigu更改为123.

alter user atguigu

identified by 123

 

 

三、控制台操作角色:(在Oracle企业管理器中可查)

方便:将系统权限与用户的对象权限都封装在角色中;谁要用的话直接把角色赋给它们就行。

12、SQL--控制用户权限(含练习)_第9张图片

 

1通过命令行的方式创建角色:

 

12、SQL--控制用户权限(含练习)_第10张图片

create role manager;

 

2为角色赋予权限:

grant create session,create table,create view to manager;

 

3将角色赋予用户:

SQL> grant manager to atguigu01;

Grant succeeded

 

 

四、控制台操作对象的权限:

 

12、SQL--控制用户权限(含练习)_第11张图片

 

12、SQL--控制用户权限(含练习)_第12张图片

 

12、SQL--控制用户权限(含练习)_第13张图片

1、设置对象的权限:(system下)

grant select,update  --select和update权限

on scott.employees  --scott用户的employees表

to atguigu  --访问scott用户的employees表对象权限给atguigu用户

 

2、在atguigu用户登录中查询scott用户的employees表:

select * from scott.employees

 

3、在atguigu用户下更改scott中的employees表中的数据:

(1)、更改操作:

SQL> update scott.employees

  2  set last_name='BABY'

  3  where employee_id=205;

1 row updated

 

(2)、在scott用户登录下查询,结果显示并没有更改:

--因为忘了在atguigui用户下操作完scott用户下的表后没有进行commit;(提交)操作

--commit;操作后再去scott用户下查询显示在atguigu下的修改成功了。

 

 

五、分配权限的权利:

1、

12、SQL--控制用户权限(含练习)_第14张图片

 

附:表示不能再授予别的用户;对号表示还可以再授予别的用户。- -❌对应的权限不能再有子类;而对号对应的权限还可以再有子类。

 

2、控制台操作分配权限的权力:

如果再系统用户(system)下将权限分配给其他用户必须写“用户名.表名”;而如果直接再相应的用户下分配本用户中表的权限,则不需要写用户名。

12、SQL--控制用户权限(含练习)_第15张图片

默认的是权限不能再给别人。

(1)、with grant option(使用户同样具有分配权限的权力):

SQL> grant select,update

  2  on scott.employees

  3  to atguigu

  4  with grant option;

Grant succeeded

 

(2)、public(向数据库中所有用户分配权限):

SQL> grant select,update

  2  on scott.employees

  3  to public;

Grant succeeded

这样在所有的用户登录下都可以实现select和update。

 

3、收回对象权限:

 

12、SQL--控制用户权限(含练习)_第16张图片

 

(1)、

SQL> revoke select

  2  on employees

  3  from atguigu;

Revoke succeeded

 

4、查询权限分配情况:

 

12、SQL--控制用户权限(含练习)_第17张图片

 

(1)、查询系统权限:

SQL> select * from user_sys_privs;

 

(2)、结果:

USERNAME                       PRIVILEGE                                ADMIN_OPTION

------------------------------ ---------------------------------------- ------------

SCOTT                          CREATE ANY SYNONYM                       NO

SCOTT                          UNLIMITED TABLESPACE                     NO

SCOTT                          CREATE ANY VIEW                          NO

 

 

12、SQL--控制用户权限(含练习)_第18张图片

 

 

 

 

 

 

 

 

 

 

 

六、测验题一:

 

1、如果用户能够登陆到数据库,至少需要哪种权限?是系统权限还是对象权限

 CREATE SESSION 系统权限

 

2、创建表需要哪种权限?

CREATE TABLE

 

3、将表departments的查询权限分配给用户system

GRANT select

ON departments

TO system

 

4、从system处收回刚才赋予的权限。

REVOKE select

ON departments

FROM system

 

5、创建角色dvp,并将如下权限赋予该角色

CREATE PROCEDURE

CREATE SESSION

CREATE TABLE

CREATE SEQUENCE

CREATE VIEW
1)CREATE ROLE dvp;

2)GRANT CREATE PROCEDURE,CREATE SESSION,CREATE TABLE,CREATE SEQUENCE,CREATE VIEW

TO dvp;

 

 

你可能感兴趣的:(Oracle数据库)