代码
CREATE USER target IDENTIFIED BY target ;
GRANT CONNECT, RESOURCE TO target;
刚刚创建的oracle实例中会内建两个用户:system和sys。
(1)新建用户
我们先使用system用户登录oracle实例来新建t_user用户。
新建用户格式:create user 用户名 identified by 密码 ;
如: create user t_user identified by t_user ;
修改用户的格式如下:
alter user 用户名 identified by 密码 ;
如:alter user t_user identified by t_user001 ; 将t_user用户的密码修改为t_user001
删除用户格式:
drop user 用户名 [cascade]; 如果要删除的用户已经创建了表或视图等对象时,要删除时要加上cascade进行级联删除,可以删除该用户创建的东西。
drop user t_user ;
(2)赋予用户权限
新建立起来的用户t_user还不能连接数据库,因为还没有权限。oracle的权限分为系统权限和对象权限。系统权限允许用户执行特定的命令如:create session登录数据库、 create table创建表等系统操作,对象权限是对数据库中的对象如表、视图中的内容进行操作,如select on student可以对student表中数据进行查询。
首先将create session权限赋给t_user用户:
赋予权限或角色的命令格式如下:
grant 权限1,权限2,角色1,角色2 to 用户 ;
grant connect ,resource to t_user ; connect是连接数据库的角色,resource是操作数据库资源的角色。
对象权限如对表有:select、delete、insert、update、all(含有该对象的所有权限)等权限或角色。
如果system用户有一个emp表,我们要将emp表的对象权限给t_user用户,则可以使用以下格式:
grant all on emp to t_user ; 将对emp表的select、delete、insert、update等权限给t_user。这样我们就可以使用t_user查看system用户emp表的内容。
select * from system.emp ;
- 权限的传递
如果我们想将赋给t_user用户的权限使通过t_user用户赋给其他用户,则可以在给t_user用户赋权限时这样:
系统权限带with admin option,对象权限带with grant option 。如:
grant create table to t_user with admin grant option ;
grant select on emp to t_user with grant option ; 这样t_user也可以给其他用户付emp的select权限了。
(3)回收权限
当我们不想t_user用户可以删除system用户emp表的内容,我们可以将delete on emp 权限收回,格式如下:
revoke 权限1,权限2,角色1,角色2 from 用户 ;
如:revoke delete on emp from t_user ; 这样我们就收回了emp表的delete权限
如果t_user将emp表的delete权限付给了t_user2用户,当我们收回t_user的delete权限时同时也收回了t_user2的delete权限,即:对象权限的回收会级联。
系统权限的回收不会级联。
(4)角色
oracle提供了三种标准的角色:connect(连接角色)、resource(资源角色)、dba(数据库管理员角色)
connect:拥有该角色的用户可以连接数据库,但不能创建实体对象。
resource:拥有该角色的用户可以创建实体,但不能创建数据库结构。
dba:拥有该角色的拥有可以创建实体,也可以创建数据库结构。
普通用户拥有:connect、resource角色,DBA管理员:connect、resource、dba三种角色。