Oracle12c学习——用户管理(二)

Oracle用户管理机制

Oracle通过管理员用户例如sys和system通过分配权限与角色来管理普通用户。

权限分为系统权限和对象权限两种。

系统权限:规定用户使用系统的权限,也就是和数据库管理的相关权限。

系统权限大概有200多种,大多数都是影响数据字典的操作(创建表或者用户),其他的影响数据库和实例,例如创建表空间,调整实例参数值等,或者是创建会话
常见的权限:
1. create session 创建会话 只有有这个权限才能连接
2. restricted session 受限制的会话(假如使用startup restrict或者alter system enable restricted session进行调整的话,那么只有这个权限的用户才能够连接)
3. alter database 更改数据库,允许访问多个修改物理结构所需的命令
4. alter system 更改系统,允许控制实例参数和内存结构
5. create tablespace
6. create table 注意,
7. grant any object privilege 授予任何对象权限:允许被授权人将其本身不拥有的对象的对象权授予他人,但是不能授予自己
8. create any table :能够创建属于其他用户的表
9. drop any table :能删除其他用户的表
9. insert any table,update any table,delete any table  :能够DML其他用户的表
10. select any table :被授权人能够对数据库中的任何表执行select操作

对象权限:规定用户对数据库对象(表或试图)的访问,例如增、删、查、改等。

角色分为预定义角色和自定义角色两种。

预定义角色:Oracle预先把常用的权限集中起来,定义好的角色。

自定义角色:自己定义的角色。

问题1:首用户先创建一个test用户,密码也为test。

create user user_name identified by password;

因为实在CDB环境下,所以用户名开头加上C##,即现在用户名为C##test.

Oracle12c的账户分为公用账户和本地账户,公用账户实在CBD下创建的,即账户名必须以C##开头,并且可以给所有的PDB用户使用。本地用户只能在PDB中创建账户,本地账户不能以C##开头。

问题2:登录C##test用户

conn user_name/password


问题3,:为什么刚创建的用户不能登录?

因为刚创建的用户没有任何的权限,需要管理员给用户分配相应的权限,

grant create session to user_name.

问题4:在当前的用户下,给用户C##test修改密码

password user_name;

问题5:在管理员用户下,给用户C##test修改密码

alter user user_name identified by password;


问题6:给用户C##test分配相应的角色

grant connect to C##test;

grant resource to C##test;

问题7:在用户下创建表tb,并且对表做出相应的操作。


此时如上图可知,该用户对表空间users没有相应的权限,所以不能对表tb做出插入操作,此时我们会疑惑表空间users从哪里来的呢?

在创建用户时的完整语句为:

create user user_name identified by password               /user_name为用户名 password为密码

default tablespace users                                                 /默认表为空间users

temporary tablespace temp                                            /临时表空间为temp

quto 3M on users;                                                            /限制用户创建的表不能超过3M

我们可以了解到当我们创建C##test用户时,系统会创建默认的表空间为users,而对用户没有相应的权限,我们可以通过管理员给用户分配相应的权限,此时我们就可以操作了。

Oracle中与表空间有关的系统权限。

create tablespace            允许用户创建表空间。

alter tablespace               允许用户修改表空间的属性。

drop tablespace                允许用户删除表空间。

manage tablespace            允许用户更改表空间的状态,包括online,offline,begin backup和end backup。

unlimited tablespace             允许用户无限度使用表空间。        

     

问题8:在用户下删除表tb,并且回收用户C##test的相应权限。

删除表:sql>drop tabel table_name;


撤销角色connect:sql>revoke connect form user;


撤销角色resource:sql>revoke resource form user;

撤销权限unlimited tablespace:sql>revoke unlimited tablespace from user;


问题9:删除用户C##test。

sql>drop user user_name [cascade];

cascade:当我们删除某个用户时,如果这个用户穿件过数据对象,那我们删除用户时,需要加上cascade,表示删除用户时,把该用户创建的数据对象一并删除。



















猜你喜欢

转载自blog.csdn.net/yeuteyietir/article/details/80044836