Oracle数据库创建用户与分配权限

要创建一个用户名为kobe的用户,密码为kobe123,则可以使用如下SQL语句:

create USER kobe identified by kobe123;

系统提示如下错误: 

报错原因就是,创建用户时应该以sys管理员身份登录。

这样用户kobe就创建完成了。

如果想要修改密码,则使用下面的命令:

ALTER USER kobe

IDENTIFIED BY 新密码;

用户授权

具体语法:

GRANT 权限1[,权限2...]

TO 用户名;

权限包括系统权限、角色权限、对象权限

系统权限:

  1. 允许用户登录: create session
  2. 允许创建表:create table
  3. 允许创建视图:create view
  4. 允许创建序列:create sequence
  5. 允许创建过程:create procedur 

例如,将前两个权限授予kobe用户,使用语句

GRANT create session,create table TO kobe;

角色权限:

数据库中系统权限,用户权限很多,如果针对每个用户逐个分配每个权限,费时又费力。因此,可以将相关的一系列权限组成一个命名的组,这个权限组就是角色。角色拥有的权限就是角色权限,将角色权限授予用户,则这个角色权限拥有的权限就全部授予了这个用户。一个用户可以被指定为多个角色,则同时拥有这多个角色所拥有的全部权限。例如:

create role dev;           //创建dev角色

grant create table ,create view,create sequence to dev;     //给dev角色授权

grant dev to kobe;              //把dev中的权限授予kobe用户

对象权限:

对象权限是在指定的表,视图,序列和过程等对象上执行特定操作的权限,包括insert,delete,update,select以及index,alter,references(引用权限)和execute(执行权限)。但并不是每个对象都可以被授予这些权限

例如,给kobe用户授予针对雇员表emp的插入和查询权限该如何做?

雇员表emp的所有者是SCOTT用户,因此用SCOTT用户访问oracle数据库,完成对kobe用户的授权工作

SQL语句如下:


grant select, insert
on emp
to kobe

此时授权完成,执行下面的语句:

select * from emp;

提示“表或视图不存在”。这是因为在数据库中,方案(schema)是管理数据库对象的逻辑结构,一个数据库对象的全称应该是:“方案名.对象名”(默认情况下方案名等于用户的名字),之前不使用方案名的原因是用户操作的数据库对象是本用户的对象,方案名可以省略。而现在是用kobe用户访问数据库,需要操作SCOTT用户的emp对象,所以必须要写全名。正确的SQL语句如下:

select * from Scott.emp;

每次访问数据库对象时都得带着方案名,若是觉得不舒服,可创建同义词(SYNONYM,需要有创建同义词的权限),通过同义词进行访问,SQL语句如下:

create SYNONYM emp for Scott.emp;

select * from emp;

撤销权限:

使用revoke语句撤销已经授予用户的权限

例如要撤销给kobe用户针对雇员表emp的插入权限(scott用户身份下操作),SQL语句如下:

revoke insert

on emp

from Kobe
撤销kobe用户创建序列的系统权限的功能,SQL语句如下(用系统管理员账户):
revoke create sequence

from Kobe

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值