权限是Oracle的主要组成之一。Oracle的权限分为系统权限和对象权限,拥有系统权限的用户就可以对数据库进行操作,拥有对象权限的用户只能操作该对象权限允许的操作。Oracle中有一百多种有效的权限。
系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等
一、创建用户
系统管理员可以创建新的用户。
语法:CREATE USER (用户名) IDENTIFIED BY (密码);
在创建用户时,须要由拥有系统权限的系统管理员进行创建,否则会报权限不足的错。
二、分配权限
用户创建好了之后就可以给这个用户赋予权限。
语法:GRANT (权限) TO (用户名);
常见的系统权限有以下几种:
CREATE SESSION(允许用户登录数据库权限)
CREATE TABLE(允许用户创建表权限)
CREATE SEQUENCE(允许用户创建序列权限)
CREATE VIEW(允许用户创建视图权限)
CREATE PROCEDURE(允许用户创建过程权限)
这里至关重要的权限是CREATE SESSION(允许用户登陆数据库的权限),如果不赋予CREATE SESSION权限,用户是无法登陆到数据库的。
三、分配用户表空间
给用户分配了CREATE TABLE(允许用户创建表权限)权限之后用户是还无法创建表的,因为用户还没有表空间。只有分配了相应的表空间之后才可以创建表。
语法:ALTER USER (用户名) QUOTA (空间大小) ON (表空间名);
空间大小处用UNLIMITED就是不限制空间的大小。
四、角色
Oracle中有一百多种有效的权限。每次创建用户之后都要给用户赋予权限,而有很多的用户拥有的权限是一样的,那么一个个的给用户赋予权限就会很繁琐,这时候就可以用到角色。管理者可以创建一个角色来赋予权限,然后再把这个角色赋予给用户,那么用户就继承了这个角色所拥有的权限。
语法:CREATE ROLE (角色名);
角色的权限赋予跟用户的权限赋予是一模一样的。角色赋予权限之后就可以把这个角色赋予给用户,进而使得用户获得这些权限。
语法:GRANT (角色名) TO (用户名);
五、修改密码
用户由管理员创建之后就会有相应的账号密码,管理员和用户本人可以对密码进行修改。
语法:ALTER USER (用户名) IDENTIFIED BY (新密码);
修改密码的代码跟创建用户的差一个关键字,创建用户用CREATE,修改用ALTER。
六、删除用户
语法:DROP USER (用户名)[CASCADE]
加上CASECADE 就会将用户创建的对象一并删除掉。
对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等。
不同的对象具有不同的对象权限
对象的拥有者拥有所有权限
对象的拥有者可以向外分配权限
一、分配对象权限
1.分配给用户usertio查询employees表的权限。
2.分配这个表的查询权限给该用户的同时允许该用户分配这个权限给其他用户。
3.给所有用户分配这个表的查询权限。
二、收回对象权限
收回分配给用户usertio查询employees表的权限。
查询权限分配情况
ROLE_SYS_PRIVS 角色拥有的系统权限
ROLE_TAB_PRIVS 角色拥有的对象权限
USER_TAB_PRIVS_MADE 查询分配出去的对象权限
USER_TAB_PRIVS_RECD 用户拥有的对象权限
USER_COL_PRIVS_MADE 用户分配出去的列的对象权限
USER_COL_PRIVS_RECD 用户拥有的关于列的对象权限
USER_SYS_PRIVS 用户拥有的系统权限
USER_TAB_PRIVS 用户拥有的对象权限
USER_ROLE_PRIVS 用户拥有的角色