Oracle创建用户并授权及不同用户访问表的设置

由于Oracle和其他数据库有些不同,当用户创建表后,其他用户无法直接访问,需要进行授权或进行同意词设置

oracle数据库的权限分为系统权限与对象权限

系统权限(database system privilege)

可以让用户执行特定的命令集。例如,create table权限允许用户创建表,grant any privilege权限允许用户授予任何系统权限。

对象权限(database object privilege)

可以让用户能够对各个对象进行某些操作。例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图序列(sequences)或快照中查询信息

一、创建、删除用户

登录到system以创建其他用户

sqlplus /nolog

connect / as sysdba

创建用户以及设置密码

create user username identified by password;

修改用户

alter user username identified by password;

撤销用户

drop user username;

二、为用户授予角色撤销授权

oracle提供三种标准角色(role):connect/resource和dba

connect(连接角色)

临时用户,特指不需要建表的用户,通常只赋予他们connect role.

connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select、insert、update和delete等

拥有connect role的用户还能够创建表、视图序列(sequence)、簇(cluster)、同义词(synonym)、会话(session)和其他数据的链(link)

resourcerole(资源角色)

resource提供给用户另外的权限以创建他们的表、序列、存储过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)

dba(数据库管理员角色)

dba role拥有所有的系统权限

包括不限制 的空间限额和给其他用户授予各种权限的能力

为用户授权

grant connect,resource,dba to username;

撤销对用户赋予的权限

revoke connect,resource,dba from username;

访问其他用户创建的表,无法直接访问

有两种方式

1、授权

2、同义词

授权方式

登录创建该表的用户

grant select,insert,update,delete on tablename to username

权限名 需要授权的表 需要授权的用户

同义词

登录需要使用的用户

create synonym tablename for username.tablename

同义词表名 表所属用户名.表名

说明:同义词的设置不依赖第一种方式的授权,但仍然建议给予授权(在部分场景下进行存储过程的编写中,不给予授权会出现报错)