在Oracle12C中,用户权限的管理相对传统的 Oracle 单数据库环境稍有不同。在多租户环境中有两种类型的用户。
创新互联建站是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站、品牌网站制作、成都全网营销。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都网站建设、成都网站制作、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。①:共同用户(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; ---将角色赋予本地用户
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款