在oracle中,一个服务器上一般只有一个数据库。在一个数据库中,不同的用户项目由不同的用户访问,每一个用户拥有自身创建的数据库对象,当一个用户想访问其它用户下的数据库对象时,必须由对方授予一定的权限,因此,用户和权限在oracle中非常重要。下面是我总结的一些关于用户和权限的知识,和大家一起分享一下。
连接数据库前,必须保证oracle实例的服务与监听开启。在oracle中,默认有两个数据库管理员用户(sys和system)和一个普通用户(scott)。sys用户具有所有数据库管理的功能,system用户除了不能用于数据库的备份及恢复,scott表是为程序测试提供的用户。
一、用户
1.创建用户
格式:create user 用户名 identified by 密码;
create user test1 identified by 123456;
创建用户后并没有连接数据库,创建操作数据库对象的权限,需要进行相应的授权。
grant connect to test1;--允许用户连接数据库 grant resource to test1;--允许用户创建相关的数据库对象,如表,序列等。
进行上面的授权后,就可以连接数据库并且创建表等对象了。
2.常用系统权限
系统权限 | 允许用户的操作 |
create session | 连接到数据库 |
create sequence | 创建序列 |
create synonym | 创建同义词 |
create table | 在用户架构中创建表格 |
create any table | 在任意框架中创建表 |
drop table | 从用户框架中删除表 |
drop any table | 在任意框架中删除表 |
create procedure | 创建存储过程 |
execute any procedure | 在任意框架中执行存储过程 |
create user | 创建用户 |
drop user | 删除用户 |
create view | 创建视图 |
3.数据库角色
(1)定义:若干系统权限的集合。
(2)常用角色
1>connect角色:主要用于临时表中,拥有connect角色的用户,可以与服务器建立连接会话(session,客户端对服务器的连接,称为会话)。
grant connect to test1;
2>resource角色:resource提供给用户另外的权限以创建他们的表,序列,过程,触发器,索引等。但不能创建视图。
grant resource to test1;
3>DBA角色:拥有所有的系统权限,用户system拥有DBA角色。
grant dba to test1;
(3)一个用户对其他用户的授权
一个用户授权时使用with admin option,则该用户可以继续讲该权限分配给其他用户。并且当该用户的权限被收回后,该用户给其他分配出去的系统权限不受影响。
grant connect,resource,drop user to test2 with admin option;
4.收回权限
revoke connect,resource from test2;
5.修改用户密码
--修改用户密码 alter user test2 identified by 111111; --或可视化更改用户密码 conn test2/123456 password;--password必须放在下一行
6.查询用户
select * from dba_users; select * from user_role_privs; SELECT * FROM user_sys_privs
7.删除用户
drop user test2;
注意;删除用户时,若用户架构包含对象(如表等),那么在删除用户时需要级联删除,即drop user test2 cascade;
总结:1.一般情况下,一个普通用户若只是做测试用户,不需要建表等,只分配connect权限即可。
2.若用户需要建表等,则分配connect和resource权限。
3.当一个用户需要给其他用户授予系统权限时,其他用户给该用户分配权限时需要加with admin option
二、对象权限
1.定义:对象权限允许用户执行某些数据库对象操作,如表上执行DML语句。
对象权限 |
允许用户的操作 |
select | 查询 |
update | 更新 |
add | 增加 |
delete | 删除 |
execute | 执行存储过程和函数 |
2.对象权限的分配与收回
语法与分配收回系统权限类型,不用的地方在于当允许被授权用户将权限授予其他用户时使用的是with grant option,而非with admin option。且当用户的权限被收回后,它之前授予其他用户的该权限也被撤销。