我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle12C多租户管理用户、角色、权限

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle12C多租户管理用户、角色、权限

在Oracle12C中,用户权限的管理相对传统的 Oracle 单数据库环境稍有不同。在多租户环境中有两种类型的用户。

①:共同用户(Common User): 该用户存在所有容器 (根和所有的 Pdb) 中。

②:本地用户(Local User): 用户只有在特定的 PDB 中存在。同样的用户名中可以存在多个Pdb中创建,但它们之间没有关系。


同样,有两种类型的角色:如

①:共同角色(Common Role): 该角色在所有容器 (根和所有的 Pdb) 中。

②:本地角色(Local Role): 该角色只存在于特定的 PDB。可以在多个 Pdb中创建相同的角色名称,但它们之间没有关系。

一些 DDL 语句有扩充,以使他们能够定向到当前容器还是所有容器的CONTAINER子句。它的使用将在以下各节中进行演示。


注意:

   在 cdb 中创建公共用户的时候, pdbs 中也会创建相同用户。若CDB 下 GRANT 命令赋权,如果赋权时未指定container=all,则赋权只在CDB中生效,并不会在PDB中生效,这个用户要能够访问PDB,需要切换到 pdb 再赋权。。若赋权时指定 container=all,则赋权在CDB中生效,也在PDB中生效。


1、在CDB中,给用户赋权时未指定container=all:

SQL> show con_name;


CON_NAME

------------------------------

CDB$ROOT


SQL> create user c##zhang identified by zhang;


SQL> grant create session to c##zhang;  --赋权给用户,这个时候开启另一个窗口使用该用户登录pdb的时候是没有权限的,如下:


[oracle@localhost ~]$ sqlplus c##zhang/zhang@192.168.2.100/testpdb


SQL*Plus: Release 12.2.0.1.0 Production on Tue Jul 18 15:15:51 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

ERROR:

ORA-01045: user C##ZHANG lacks CREATE SESSION privilege; logon denied


----切换到pdb中,给用户赋权就可以登录了:

SQL> alter session set container=testpdb;


SQL> grant create session to c##zhang;


2、在CDB中,给用户赋权时指定container=all:

SQL> create user c##zhang1 identified by zhang;


SQL> grant create session to c##zhang1 container=all;


3、创建公共角色:

SQL> show con_name


CON_NAME

------------------------------

CDB$ROOT      


SQL> create role c##role;   ---创建角色


SQL> grant select on dba_objects to c##role container=all;  --给这个角色加权限


SQL> grant c##role to c##zhang1 container=all;  --将角色赋给公共用户


SQL> alter session set container=testpdb;  ---切换到pdb


SQL> grant c##role to admin;   ---也可以把这个角色赋予pdb中的本地用户


4、本地角色

  本地角色是以类似的方式到 pre-12 c 数据库创建的。每个 PDB 可以具有与匹配的名称,因为当地的作用范围仅限于当前 PDB 的角色。

必须满足以下条件。

条件:

①:必须连接到具有CREATE ROLE权限的用户。

②:如果您连接到公共用户,容器必须设置为本地 PDB。

③:角色名称为本地角色不必须与"C##"或"c##"作为前缀。

④:角色名称必须是唯一在 PDB 内。

⑤:本地角色可以赋权给公共用户(作用范围局限于pdb内操作,不影响CDB权限)或者本地用户。如:


SQL> show con_name;


CON_NAME

------------------------------

TESTPDB


SQL> create role pdb_role;    ---创建角色

SQL> grant select on dba_tables to pdb_role;  --给角色加权限

SQL> grant pdb_role to c##zhang;  --将角色赋予公共用户

SQL> grant pdb_role to admin;   ---将角色赋予本地用户


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle12C多租户管理用户、角色、权限

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在Oracle中管理用户权限和角色

在Oracle中,可以通过以下步骤来管理用户权限和角色:创建用户:使用CREATE USER语句创建用户。例如,CREATE USER username IDENTIFIED BY password;授予权限:使用GRANT语句为用户授予相
如何在Oracle中管理用户权限和角色
2024-04-09

oracle怎么查询用户权限和角色

您可以通过以下的SQL语句来查询用户的权限和角色:1. 查询用户拥有的权限:```SELECT * FROM USER_SYS_PRIVS WHERE USERNAME = '用户名';```2. 查询用户拥有的角色:```SELECT *
2023-08-31

MYSQL用户权限管理

1.在MySQL中,用户是怎么定义的#mysql中,定义一个用户是:用户名@‘主机域‘#用户名写法:用户名如果是字符:mysql> create user [email protected]‘10.0.0.1‘;用户名是数字需要加引号:mysql> creat
MYSQL用户权限管理
2015-02-26

MySQL权限控制和用户与角色管理实例分析讲解

目录一、mysql用户登录二、用户管理三、权限控制四、角色管理一、MySQL用户登录lYoljYfqX一般在本机上我们的登录命令:mysql -u root -p+密码 这里介绍命令的作用:-u 指定用户名-h 指定主机地址(默认为l
2022-12-01

编程热搜

目录