坑向: 关于对Oracle数据库新建用户后,进行角色授予GRANT “CONNECT“, “RESOURCE“后,用户仍然没有指定角色的相关权限,致拒绝登录ORA-01045问题的探究

1 环境介绍

windows 7 操作系统
Oracle 11g

2 问题描述

在Oracle数据库连接后,自定义新建用户(BAO)后(此时该用户没有登录数据库的权限),使用 所谓的
GRANT "CONNECT", "RESOURCE" TO "BAO";
即使显示授权成功(或者操作成功后),该新建用户仍然无法登录数据库。
具体错误如下(ORA-01045):
在这里插入图片描述

3 原因分析

Oracle角色 可以被理解为可复用的 权限集合。
Oracle角色 被授予给用户(GRANT后),仍然需要多一条语句操作。
即增加:修改用户的默认角色 ALTER USER "BAO" DEFAULT ROLE "CONNECT", "RESOURCE";
(若没有此语句,Oracle会将默认角色仍然设置为NONE,即ALTER USER "BAO" DEFAULT ROLE NONE;导致即使GRANT角色已赋予基本权限成功后,该用户仍然无法登录数据库)

但是权限的授予只需要一条语句, GRANT CREATE SESSION TO "BAO"; 即可。

4 解决办法(以下操作皆已使用DBA身份登录了数据库)

4.1 使用PL/SQL为新建用户授予基本权限以登录Oracle数据库
GRANT "CONNECT", "RESOURCE" TO "BAO";

ALTER USER "BAO" DEFAULT ROLE "CONNECT", "RESOURCE";
4.2 使用OEM(Oracle Enterprise Management)为新建用户授予基本权限以登录Oracle数据库

为BAO用户授予Connect,Resource角色,选择完后确认提交!
在这里插入图片描述
注意提交完后确保新建用户下的角色的复选框默认值为勾选状态即可(此处保障了新建用户的角色不会被默认设置为NONE)

在这里插入图片描述

4.3 使用Navicat数据库图形管理工具为新建用户授予基本权限以登录Oracle数据库

进入用户角色授予的修改界面(成员属于),选中 授予作为默认 两个复选框
具体如下(仅演示了Connect角色授予,Resource角色授予类似):在这里插入图片描述
可以查看到当选择默认后,在SQL预览中可以发现,新建用户的默认角色也被修改
在这里插入图片描述

5 最终结果

在对 授予角色修改默认用户角色后,以新建用户的身份成功登入数据库。

5.1 PL/SQL效果:

在这里插入图片描述

5.2 Navicat效果

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值