欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle——用户和权限管理

程序员文章站 2022-04-26 12:05:18
...

oracle 11g 中的用户和权限管理:

用户 ——分为默认的用户和自己创建的用户

(只有用合法的用户账号才能访问oracle数据库)

一、用户

1、oracle 11g中的默认用户(举例三个)
       ① sys (oracle中权限最大的用户)
           数据库中所有数据字典表和视图都存储在 SYS 模式中。SYS用户主要用来维护系统信息和管理实例。

       ② system(默认的系统管理员)
          SYSTEM 是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表和视图。通常通过SYSTEM用户管理数据库用户、权限和存储等

③ scott (普通内置用户)
            oracle公司中的第一个员工的名字。在安装oracle中自己制定密码。

2、oracle中的创建新用户
要连接到Oracle数据库,就需要创建一个用户帐户
每个用户都有一个默认表空间和一个临时表空间
CREATE USER命令用于创建新用户,语法如下:

create user 用户名 identified by 密码
[default tablespace taablespace]   -- 默认表空间
[temporary tablespace tablespace]  -- 临时表空间
  • 其中密码应该以字母、下划线、汉字开头。不能以数字开头!!!

3、oracle网页管理登录
step 1 : https ://计算机全名 : 端口号(1158)/em
        sys 登录时要将连接身份改为sysdba
        system与其他普通用户Scott等登录身份为nomal

二、profile 概要文件

当我们创建用户时候,如果没有指定概要文件,那么oracle就会自作主张将名为default的概要文件赋值给用户。
oracle——用户和权限管理

  • 如上图所示 default概要文件就是制定一个用户所占用的资源

举个栗子:

--创建一个用户没有指定概要文件,即默认概要文件为default
create user test1 identified by test1;  
--自己在创建一个概要文件的语法如下
create profile pro1 limit 
                 password_life_time  10   -- 口令有效期(10天之内必须改密码)
                  password_grace_time 2    -- 最大宽限两天(依据上面设定)
                   failed_login_attemps 2   -- 允许最大失败登录次数
                     password_lock_time   2;  -- 锁定天数
--给test1更改概要文件 用 alter啦
alter user test1 profile pro1;
  • 小贴士 万一账户被锁定了 就找system解锁哦 alter user test1 account unlock;

三、权限

执行特定命令 访问数据库对象的权利。
权限有两种类型,系统权限和对象权限

  • 系统权限允许用户执行某些数据库操作,如创建表,创建会话就是一个系统权限

    授予用户权限,可以是系统权限或者对象权限。
    GRANT privilege [,privilege…] TO user [, user|role, PUBLIC…]
    [WITH ADMIN OPTION];

    说明:包含了WITH ADMIN OPTION,只能是系统权限。

    收回系统权限REVOKE……FROM……
    例:REVOKE create session FROM test1;

  • 对象权限允许用户对数据库对象(如表、视图、序列等)执行特定操作 (对某一个特定的对象)
    grant……to……
    revoke……from……

系统权限::

-- 以下便是创建一个用户能够登录并建表的基本权限
grant create session to test1; —— 连接数据库的权限
grant create table to test1;   --建表的权限
grant unlimit tablespace to test1; -- 使用表空间的权限

—— test1给其他用户创建表/删除表的权限
grant create any table to test1;
grant drop any table to test1;

在system下可以查看一个用户拥有几个权限:
select * from dba_sys_privs d where d.grantee='TEST1';
– 老铁 ’ ‘中 必须大写!!

系统权限的传递:with admin option

 grant create session to test2 with admin option;
 -- 在此用户之下创建的用户都将具有create session权限。即具有向下传递性。
  • 不会随着该权限的缺失而影响被传递者对该权限的使用。

对象权限::

GRANT SELECT ON SCOTT.EMP TO test3; 

GRANT UPDATE ON SCOTT.EMP TO test3; 
GRANT UPDATE(某一列) ON SCOTT.EMP TO test3; 

GRANT ALL ON SCOTT.EMP TO  test3; 
--允许用户插入、删除、更新和查询 EMP 表中的记录

对象权限的传递:: with grant option

grant select on scott.emp to tast4 with grant option;

区别

  • 对象权限 上游收回权限,下游也跟着被收回
  • 系统权限 上游收回权限,下游不影响对该权限的使用。

四、更改与删除用户

alter user user_name identified by new_password;
drop user user_name
drop user user_name cascade; –删除用户模式
拓展:
drop tablespace 表空间名 including contents and datafiles;

五、角色管理 role

角色管理:角色是一组相关权限的组合,可以将权限授予角色,再把角色授予用户,以简化权限管理。

(1)创建角色CREATE ROLE,应该具有CREATE ROLE系统权限。
CREATE ROLE role_name;

(2) 授予角色权限,可以是系统权限或者对象权限。
GRANT privilege TO ROLE;
例: grant create session ,create any table, drop any table to role1;

(3) 将角色授予用户
GRANT role TO user;
例: grant role1 to test2;

(4) 从用户收回角色
REVOKE role FROM user;

oracle中的内置角色:
(1) connect角色 包含create session权限
(2) resource 内置资源 包含多种create 权限。

select * from role_sys_privs r where r.role='CONNECT'; 
-- 查看一个角色所拥有的系统权限

select * from dba_tab_prives r where r.role='CONNECT';
-- 查看一个角色所拥有的对象权限

select * from dba_tab_prives d where d.grantee='SCOTT'; 
-- 查看一个用户所拥有的系统权限

select * from dba_tab_prives d where d.grantee='SCOTT'; 
-- 查看一个用户所拥有的对象权限

                                                                        oracle——用户和权限管理