此处介绍下Oracle的权限等级
- sys;//系统管理员,拥有着最高权限
- systen;//本地管理员,拥有次高权限
- scott;//普通用户
角色(即权限的集合,可以把一个角色授予给用户)
CONNECT角色: --是授予最终用户的典型权利,最基本的权力,能够连接到ORACLE数据库中,并在对其他用户的表有访问权限时,做SELECT、UPDATE、INSERTT等操作。
- ALTER SESSION --修改会话
- CREATE CLUSTER --建立聚簇
- CREATE DATABASE LINK --建立数据库链接
- CREATE SEQUENCE --建立序列
- CREATE SESSION --建立会话
- CREATE SYNONYM --建立同义词
- CREATE VIEW --建立视图
RESOURCE角色: --是授予开发人员的,能在自己的方案中创建表、序列、视图等。
- CREATE CLUSTER --建立聚簇
- CREATE PROCEDURE --建立过程
- CREATE SEQUENCE --建立序列
- CREATE TABLE --建表
- CREATE TRIGGER --建立触发器
- CREATE TYPE --建立类型
DBA角色,是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有所有的系统权限
首先win+R 输入cmd打开命令行 输入
sqlplus /nolog
然后通过系统管理员的身份登录
conn / as sysdba;
如果连接错误的话,记得启用oracle相关服务
登录之后就可以创建用户了
create user test identified by 123456;
12c的版本肯定会报错:
ORA-65096: 公用用户名或角色名无效
创建用户的时候用户名以c##或者C##开头即可。
错误写法: create user test identified by 123456;
正确写法: create user c##test identified by 123456;
创建成功以后就需要给新建用户权限
grant create session to c##test;//授予c##test用户创建session的权限,用来登录
grant unlimited session to c##test;//授予c##test用户使用表空间的权限
grant create table to c##test;//授予创建表的权限
grant drop table to c##test;//授予删除表的权限
grant insert table to c##test;//插入表的权限
grant update table to c##test;//修改表的权限
授权标准角色(即系统默认权限的集合CONNECT、RESOURCE、DBA)
grant connect, resource to c##test;
oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的
如果想让c##test拥有访问其他表的权限,则需要以下命令
grant select on tablename to c##test;//授予c##test用户查看指定表的权限
grant drop on tablename to c##test;//授予删除表的权限
grant insert on tablename to c##test;//授予插入的权限
grant update on tablename to c##test;//授予修改表的权限
grant insert(id) on tablename to c##test;
grant update(id) on tablename to c##test;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update
grant alert all table to c##test;//授予c##test用户alert任意表的权限
撤销用户权限
revoke create session from c##test;//移除c##test用户创建session的权限
revoke unlimited session from c##test;//移除c##test用户使用表空间的权限
revoke create table from c##test;//移除创建表的权限
revoke drop table from c##test;//移除删除表的权限
revoke insert table from c##test;//移除插入表的权限
revoke update table from c##test;//移除修改表的权限
revoke all from public;//移除所有用户(public)所有权限(all)
等等···和授予权限语法基本都是一样的,除了关键字
查看权限
select * from user_sys_privs;//查看当前用户所有权限
select * from user_tab_privs;//查看所用用户对表的权限
select * from user_sys_privs;//查看当前用户所有权限
select * from user_tab_privs;//查看所用用户对表的权限
角色(即权限的集合,可以把一个角色授予给用户 )
create role myrole;//创建角色
grant create session to myrole;//将创建session的权限授予myrole
grant myrole to c##test;//授予c##test用户myrole的角色
drop role myrole;删除角色
/*但是有些权限是不能授予给角色的,比如unlimited tablespace和any关键字*/