Code前端首页关于Code前端联系我们

Oracle 数据库权限设置指南:用户、权限、角色管理

terry 2年前 (2023-09-26) 阅读数 46 #数据库

Oracle 权限设置
1. 权限分类:
系统权限:系统决定用户使用数据库的权限。 (系统权限是针对用户的)。

实体权限:给定权限用户对其他用户的表或视图的访问权限。 (对于表或视图)。 ?

RESOURCE:具有资源权限的用户只能创建实体,不能创建数据库结构。

CONNECT:具有Connect权限的用户只能登录Oracle,不能创建实体或数据库结构。

对于普通用户:授予连接和资源权限。
对于 DBA 管理用户:授予连接、资源、dba 权限。

(注:系统默认提供的功能远远不止这三类功能:参考:Oracle中预定义的功能有哪些?)

2、系统权限授权命令:
【系统权限只能由DBA-用户。导出:sys,system(初始只能是这两个用户)]
授权命令:SQL> grant connect,resource,dba to username 1 [,username 2]...;

[正常一个用户可以有通过授权获得与系统相同的用户权限,但永远不能赋予与系统用户相同的权限。系统用户权限也可以回收。]

示例:
SQL> 连接系统/管理员
SQL> 创建由 user50 标识的用户 user50;
SQL> 将连接、资源授予 user50;

查询用户拥有哪些权限:
SQL> select * from dba_role_privs;
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs;

删除用户: SQL> drop 用户用户名级联; //添加级联,用户将被删除。删除他创建的所有东西

3,转让系统权限:
添加WITH ADMIN OPTION选项,获得的权限可以转让。

SQL> 使用管理选项将连接、资源授予用户 50; //获得的权限可以转让。 ?系统权限,并且对于该用户授予相同权限的所有用户,取消该用户的系统权限不会级联授予这些用户相同的权限。

2)系统权限没有级联,即A授予B权限,B授予C权限。如果A撤销B的权限,C的权限不受影响;系统权限可以对所有用户进行撤销,即A可以直接撤销C用户的权限。允许。

3。实体权限管理
1、实体权限分类:select、update、insert、modify、index、delete、all //all包含所有权限
execute //执行存储过程权限

user01:
SQL> 允许对 user02 产品进行选择、更新、插入;
SQL> 允许对 user02 产品进行所有操作;

user02:
SQL> select * from user01.product;

// Here On当前user02检查user_tables,其中不包含user01.product表,但是如果您检查all_tables,则可以找到它,因为它可以访问它。

2。 授予所有用户表编辑权限:
SQL> 将产品上的所有内容授予公开; // public表示所有用户,这里的所有权限不包括drop。

【实体权限数据字典】:
SQL> select Owner, table_name from all_tables; // 用户可以搜索的表
SQL> select table name from user columns; // 用户创建的表
SQL> select grantor, table_schema, table_name,privilege from all_tab_privs; // 有权限可以访问的表(已授权)
SQL> select beneficiary,owner,tablename,privilege from user_tab_privs; // 已授予权限(授权)的表

3. DBA用户可以使用所有用户的任意基表(无需授权,包括删除):
DBA用户:
SQL> 创建表stud02.product(
id number( 10) ,
name varchar2(20));
SQL> 删除表 Stud02.emp;

SQL> 创建表 Stud02.employee
as
select * from scott.emp; 4. 实体权限转移(带授予选项):
user01:

SQL> Grant 选择,从产品更新到带授予选项的 user02; // user02获得权限,可以通过。

5。 恢复实体权限:
user01:
SQL>撤销选择,更新user02的产品; //所有通过的权限都会丢失。

说明

1)如果某个用户的对象权限被取消,那么对于使用MET GRANT OPTION授予权限的用户,即取消关联的授权级别时,这些用户的相同权限也会被取消。? 3 //指定锁定用户登录失败的次数
PASSWORD_LOCK_TIME 5 //指定用户被锁定的天数
PASSWORD_LIFE_TIME 30 //指定密码可以使用的天数

2. 创建用户
SQL> 创建用户名
通过密码识别
默认表空间表空间
临时表空间表空间
配置文件配置文件
表上的配额整数/无限制空间;

示例:
SQL> 创建用户 acc01
acc01 标识 // 如果密码是数字,则用双引号括起来
默认表空间帐户
临时表空间 temp
配置文件默认
账户配额5000万;
SQL> grant connect, Resource to acc01;

[*] 从用户查询默认表空间和临时表空间
SQL> select username,default_tablespace,temporary_tablespace from dba_users ;

[*] 获取系统源文件名:
SQL> select * from dba_profiles;
源文件类似于表格,创建后立即保存到数据库中。
SQL> 从 dba_users 中选择用户名、配置文件、默认表空间、临时表空间;

SQL> 创建配置文件公共限制
failed_login_attempts 5
空闲时间 5;

SQL> 更改用户 acc 01 配置文件常规;

3. 更改用户:
SQL> 更改用户名
识别的密码
默认表空间表空间
临时表空间表空间
配置文件配置文件 表中配额整数/无限制空间;

1。更改密码:
SQL>更改“12345”标识的用户 ac01;

2.更改用户默认表空间:
SQL> 更改用户 acc01 默认表空间 users;

3、更改用户临时表空间
SQL> 更改用户 acc01 临时表空间 temp_data;

4.强制用户更改密码:
SQL> 更改用户acc01密码过期;

5.锁定用户
SQL> 更改用户acc01账户锁定; // 锁定
SQL> 更改用户 acc01 帐户解锁; // 解锁

IV。删除用户
SQL>删除用户名; // 用户尚未创建任何实体
SQL> remove username CASCADE; // 删除所有用户及其创建的实体

*1.当前连接的用户无法删除。?会话信息:
SQL> 编辑系统杀死会话 'sid,serial#';

3.查询用户SQL语句:
SQL> select username, sql_text from v$open_cursor;

Oracle 角色管理

1.什么是角色
角色。 角色 是一组权限。如果将 角色 分配给某个用户,则该用户拥有 角色 中的所有权限。

2。系统预定义关键字
  预定义关键字是数据库安装后系统自动创建的一些常用关键字。下面简单介绍一下这些计划中的角色。 角色包含的权限可以通过以下语句查询:
sql>select * from role_sys_privs where role='角色's name';

1。 CONNECT、RESOURCE、DBA
这些预定义函数主要是为了向后兼容。主要用于数据库管理。甲骨文建议用户设计自己的数据库管理和安全许可规划,而不是简单地用它来预定角色。这些角色在未来版本中可能不会显示为预定义的角色。

2. DELETE_CATALOG_ROLE、EXECUTE_CATALOG_ROLE、SELECT_CATALOG_ROLE
这些 角色s 主要用于访问数据字典视图和包。

3. EXP_FULL_DATABASE、IMP_FULL_DATABASE
这两个用于使用数据导入和导出工具。

4. AQ_USER_ROLE、AQ_ADMINISTRATOR_ROLE
AQ:高级搜索。这两个角色用于Oracle的高级查询功能。

5. SNMPAGENT
用于 Oracle Enterprise Manager 和智能代理

6。 RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。有关恢复库的信息,请参阅 Oracle 文档 《Oracle9i User-Managed Backup and Recovery Guide》

7。 HS_ADMIN_ROLE
使用 Oracle 异构服务功能的 DBA 需要此角色来访问数据字典中的相应表。 ?包含权限
sql>select * from role_sys_privs;

5。创建带密码的角色(输入密码则必须提供密码)
sql>create role role1identified bypassword1;

6.改变角色:你需要密码吗?
sql>更改角色 role1 未识别;
sql>password1 标识的角色 role1 更改;问:角色的构想正在落实吗?假设用户a有三个角色:b1、b2和b3。如果b1不生效,则b1中的权限不属于a,只有角色有效。 角色 最大有效授权数由MAX_ENABLED_ROLES参数设置;用户登录后,Oracle将直接分配给该用户的所有权限以及用户默认权限中的权限分配给该用户。)
sql>set role role1;//使role1生效
sql>role set role,role2;//使role1,role2生效
sql>role set role1,identified by password1;//配合使用密码的role1生效
sql>set role all;//使用该用户的所有角色s生效
sql>set role none;//设置所有角色s无效
sql >set role all except role1 ; // 该用户除role1外的所有功能均有效。
sql>select * from SESSION_ROLES;//查看当前用户的有效角色。 ? 9. 删除角色
sql>drop role role1;
删除角色后,原来拥有角色的用户将不再拥有角色,相关权限也将消失。 ?

上次有同学问我,如何查看一个oracle用户具有的权限和角色,我一时没答上来,回头好好研究了一下,记录一下,备查:

 1.查看所有用户:
  select * from dba_users;
  select * from all_users;
  select * from user_users;

2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
  select * from dba_sys_privs;
  select * from user_sys_privs;
 
3.查看角色(只能查看登陆用户拥有的角色)所包含的权限
sql>select * from role_sys_privs;

4.查看用户对象权限:
  select * from dba_tab_privs;
  select * from all_tab_privs;
  select * from user_tab_privs;

5.查看所有角色:
  select * from dba_roles;

6.查看用户或角色所拥有的角色:
  select * from dba_role_privs;
  select * from user_role_privs;
 
7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS
 
比如我要查看用户 wzsb的拥有的权限:
SQL> select * from dba_sys_privs where grantee='WZSB';
 
GRANTEE                        PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
WZSB                           CREATE TRIGGER                           NO
WZSB                           UNLIMITED TABLESPACE                     NO

比如我要查看用户 wzsb的拥有的角色:
SQL> select * from dba_role_privs where grantee='WZSB';
 
GRANTEE   GRANTED_ROLE   ADMIN_OPTION  DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
WZSB                           DBA                         NO              YES

查看一个用户所有的权限及角色
select privilege from dba_sys_privs where grantee='WZSB'
union
select privilege from dba_sys_privs where grantee in 
(select granted_role from dba_role_privs where grantee='WZSB' );

以上就是Oracle用户、权限和角色管理的全部内容。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门