Oracle基础(二):用户及权限管理

一、创建用户

(一)简单创建

1、权限:只有DBA用户才有权限,或有create user 的系统权限

2、语法:

  • create user 用户名 identified by 密码;
  • oracle密码不能以数字打头

3、实例:用户名-sam_sho、密码-sam123

  • create user  sam_sho identified by sam123;

4、注意:

1)刚创建的用户没有任何权限, 需要管理员分配权限。如登录权限:

  • grant create session to sam_sho ;        --分配登录权限
  • create session:登录权限。

2)oracle的权限较为复杂,下面单独处理。

(二)复杂创建

1、实例

  • create usersam_sho
    identified by sam123
  • default tablespace users                      --默认表空间。users是oracle自己创建的表空间
  • temporary tablespace temp                 --临时表空间
  • quota 3m on users ;                          --分配表空间大小,3m。unlimited-不限制大小
  • grant create session to sam_sho ;        --分配登录权限
  • grant dba to sam_sho ;                       --分配DBA 角色
  • grant select on V_table to sam_sho ;   --分配查询表的权限

2、表空间理解

1)表存在的空间,即在逻辑上表(Table)都是存放在表空间中(Tablespace )

2)一个表空间指向具体的数据文件

3)resourse 角色的用户,创建的表没有表空间限制。

  • grant resourse to sam_sho ;   --分配resourse  角色

(三)Oracle的用户管理机制

1、一些概念:

  • oracle dbms:数据库管理系统
  • db 实例:
  • 表空间
  • 数据对象
  • 用户
  • 权限:系统权限与数据库权限。
  • 角色:把常用的权限集中起来。

2、权限、角色、用户的关系

二、登录及修改密码

(一)用户登录

1、切换用户,用户登录。

1)语法:

  • conn 用户名/密码 【as sysdba/sysoper】

2)实例:

  • conn sam_sho/sam123;
  • conn sam_sho/sam123 as sysdba;
    • 实际登录的不是sam_sho,可以show user看看
    • 和验证机制有关,见下面。

2、显示当前登录用户的名称

1)语法:

  • show user;

(二)修改密码

1、给用户修改密码

1)语法:

  • passw【ord】  用户名

2)实例:

  • passw sam_sho;
  • passw

3)注意:

  • 给自己修改,不需要带用户名,给别人修改需要带上。

2、给别人修改密码

1)权限:需要DBA的权限,或者拥有alter user 的系统权限

2)语法:

  • alter user 用户名 identified by 新密码;

3)实例:

  • alter user sam_sho identified by sam456;

(三)删除用户

1、权限:一般需要DBA的权限,或者需要具有drop user的权限

2、语法:

  • 语法:drop user 用户名 (cascade)
  • cascade 参数:级联删除该用户创建的表等数据对象。数据库会提醒的。

3、实例:

  • drop user sam_sho ;
  • drop user sam_sho cascade;--级联删除用户创建的表等数据

4、删除某个用户,但保留其数据对象

  • 方案:锁定该用户

    • alter user 用户 account lock;
    • alter user 用户 account unlock;--解锁

三、用户口令

1、概述:

  • 需要DBA身份
  • profile 是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default 的profile。
  • 当建立用户没有指定 profile  选项,那么oracle 就会将default  分配给用户。

2、账户锁定

  • 概述:指定该账户登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用dba 的身份去执行该命令。
  • 实例:指定 这个用户最多只能尝试3次登录,锁定时间为2天。
    • create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
    • alter user sam123 profile lock_account ;--分配

3、账户解锁:

  • 语法:

    • alter user 用户名 account unlock;
  • 实例:
    • alter user sam123 account unlock;

4、终止口令

  • 概述:为了让用户定期修改密码可以使用终止口令来完成
  • 实例:建立新的profile ,要求该用户每隔10天要修改自家的登录密码,宽限期为2天。
    • create profile myProfile limit password_life_time 10 password_grace_time 2;
    • alter user sam123 profile myProfile;

5、历史口令:新旧密码不能重复

  • create profile myProfile2 limit password_life_time 10 password_grace_time 2 password_reuse_time 1
  • alter user sam123 profile myProfile2;

6、删除口令

  • drop profile myProfile2 ;

四、权限与角色

(一)、概述:

1、刚创建的用户没有任何权限(不能登录),需要赋予各种权限。oracle对于权限的管理,需要引用角色的概念。

2、权限

1)系统权限:用户对数据库管理的操作以及对数据对象本身的操作的权限。

  • 包括建库、建表、建索引、登录数据库、修改密码等等

2)对象权限:用户对其他用户的数据对象数据操作的权限。

  • 权限主要分为:select、insert、update、delete、all、create index 等等

3、角色:简化对权限的管理。

1)预定义角色

  • connect :连接的角色
  • DBA:管理员角色
  • resource:这个角色可以在任何表空间中建表。

2)自定义角色

4、查看权限、角色

  • 通过PL/SQL DEV工具查看
  • 通过各种指令

5、权限分配的方式

  • 直接分配权限

    • 系统权限(与数据库管理相关):

      • grant create sessionto sam_sho ;--分配登录权限
    • 对象权限(增删改查):
      • grantselectonV_table
        to sam_sho ;--分配查询表的权限
  • 分配角色,批量分配权限
    • grantdbato sam_sho ;--分配DBA 角色

6、撤销权限

  • 语法:revoke 权限 from 用户
  • 实例:
    • revoke select on emp from sam_sho; 从sam_sho收回emp表的查询权限
    • revoke connect from sam_sho;

(二)权限

1、系统权限:是指执行特定类型sql命令的权限,它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有 create table 权限时,可以在其方案中建表。当用户具有 create any table 权限时,可以再任何方案中建表。

1)内容

  • create session 连接数据库
  • create table 建表
  • create view 建视图
  • create public synonym 建同义词
  • create procedure 建过程、函数、包
  • create trigger 触发器
  • create cluster 建簇
  • create sequence 建索引
  • create type

2)显示:

  • oracle 提供了166系统权限,查询数据字典视图 system_privilege_map
  • select * from system_privilege_map order by name;--查询系统权限

3)赋予系统权限:grant

  • 一般情况下只有DBA才能完成 或者拥有 grant any privilege 权限
  • 赋权限语句后+ with admin option  ,实现系统权限的传递(和方案一起理解)
    • grant connect to sam_sho with admin option

4)权限回收:revoke

  • 不是级联回收。

2、对象权限:访问其他方案对象的权利。用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。

1)内容:

  • alter 修改
  • delete 删除
  • select 查询
  • insert 添加
  • update 修改
  • index 索引
  • references 引用
  • execute 执行

2)显示:DBA用户可以查看对象权限 dba_tab_privs

  • select distinct privilege from dba_tab_privs;

3)赋予对象权限

  • 直接可以赋权限给用户 或者角色
  • 赋权限语句后+ with grant option  ,实现系统权限的传递
    • grant select on emp to sam_sho with grant option
    • 只能赋予用户,不能赋予角色

4)权限回收:revoke

  • 是级联回收。

(三)角色

1、预定义角色:33种

1)常见内容

  • connect :连接的角色
  • DBA:管理员角色(sys 和 system)。不具备启动和关闭数据库
  • resource:这个角色可以在任何表空间中建表。
    • 隐藏了 unlimited tablespace 的权限

2)显示

  • 查看预定义角色:33种角色

    • select * from dba_roles;
  • 查看角色的系统权限
    • SELECT * FROM dba_sys_privs where grantee = ‘DBA‘
    • SELECT * FROM role_sys_privs WHERE role = ‘DBA‘;
  • 查看角色的对象权限
    • SELECT * FROM dba_tab_privs where grantee = ‘DBA‘
  • 查看某个用户的角色

    • SELECT * FROM dba_role_privs WHERE grantee=‘SYS‘;

2、自定义角色

1)创建角色

  • 注意:

    • BDA角色创建或者 需要具有create role 权限
    • 在建立角色的时候,可以设置验证方式,如不验证、数据库验证等
  • 不验证建立(一般都是这种)
    • create role 角色名 not identified
  • 数据库验证
    • create role 角色名 identified by 密码;

2)给角色赋权限

  • grant create session to 角色

3)实例

  • create role myRole not identified;
  • grant create session to myRole ;
  • grant select on scott.emp to myRole ;
  • grant myRole  to sam_sho;

3、删除角色

  • drop role 角色名;

(四)给用户赋权限

1、赋予直接的权限。如直接登录权限(create session)

  • grant create session to sam_sho;
  • grant select on emp to sam_sho;

2、直接分配角色,批量分配权限。如

  • grant connect to sam_sho;

    • 授于sam_sho connect的角色,即拥有登录的权限。connect,包含7 种权限。
  • grant resource to sam_sho;

(五)用户的权限操作

1、赋权限:grant

1)语法:grant  权限(角色) to 用户名;

2)实例1:

  • grant create table to sam_sho:赋予 sam_sho 创建表的权限。
  • grant dba to sam_sho:赋予 sam_sho dba的角色,其自然具有创建表的角色。

3)实例2

  • grant select on emp to sam_sho; 把emp表的查询权限赋予sam_sho
  • SELECT * FROM scott.emp;可以查询,但是需要在表前面加上scott前缀。

2、收回权限:revoke

1)语法:

  • revoke select on emp from sam_sho; 从sam_sho收回emp表的查询权限

2)注意:

  • 谁授权,谁收回。或者DBA
  • 系统权限,不是级联回收。
  • 对象权限,是级联回收。

3、权限的传递

1)scott把emp表的查询权限赋予sam_sho,sam_sho再把这种权限传递给rabby_zho

2)语法:

  • 对象权限使用 with grant option 进行传递

    • grant select on emp to sam_sho with
      grant option;(scott登录)
    • grant select on scott.emp to rabby_zho;(sam_sho登录)
  • 角色、系统权限使用 with admin option
    • grant connect to sam_sho with
      admin option;(scott登录)
    • grant connect to rabby_zho;

3)回收

  • 系统权限,不是级联回收。
  • 对象权限,是级联回收。

五、方案(Schema)

1、问题:同一个数据库实例 DEV_SAM,创建了2个用户 A 和 B 。用户 A 创建表a_table,B创建表b_table。结果A 访问不了 b_table,B访问不了 a_table 。

2、解决:

  • 当一个用户,创建好后,如果该用户创建了任意一个数据对象,这时,dbms就会创建一个对应的【方案】与该用户对应,并且该【方案】的名字与用户名一致。
  • 在这样的机制下,同一个数据库实例,可以创建多张相同表名的表,但是同一个方案中表名是具有唯一性的。
  • A 如果需要去访问 B方案下的数据,需要权限的转移。
    • 语法:

      • grant 权限 to 用户名 【with
        grant option】 对象权限
      • grant 权限 to 用户名 【with
        admin option】系统权限
    • 实例
      • grant select on emp to sam_sho ;(scott登录)

        • 使用的时候,需要带【方案】名:select * from scott.emp 。
      • grant all on emp to sam_sho with grant option;可以转移
        • grant select on scott.emp to sam2;

六、数据库的启动流程(远程登录)

(一)windows:

1、lsnrctl start (启动监听)

2、oradim  -startup -sid  数据库实例名

  • oradim  -startup -sid  orcl

3、附:查看windows系统的信息

  • systeminfo

(二)Linux

1、lsnrctl start (启动监听)

2、sqlplus sys/change_on_install as sysdba

  • sqlplus /nolog
  • conn sys/change_on_install as sysdba

3、startup

七、Oracle的登录认证方式

(一)Windows

1、oracle登录认证在windows 和linux 下是不完全相同。

2、现象:

1)conn XXXX/CCC as sysdba; 登录成功,并且显示当前用户为 sys。

2)XXXX/CCC 可以任意,只要以 as sysdba 即可。

2、操作系统认证

1)如果【当前用户】属于本地操作系统的 ora_dba 组,即可通过操作系统认证。

2)当前用户,指目前操作系统使用的用户,可以简单通过windows 任务管理器查看。

3)操作系统的用户与组:

  • 我的电脑-->右击管理-->本地用户和组-->用户,如用户 sam

  • 我的电脑-->右击管理-->本地用户和组-->组,显示sam属于ora_dba组

3、oracle 数据库验证(密码文件验证)

1)对于普通用户:

  • oracle默认使用数据库验证。

2)对于特权用户(比如 sys 用户,或以 as sysdba)

  • oracle 默认使用操作系统认证,如果验证不通过,再到数据库验证。
  • 通过配置 NETWORK\ADMIN\sqlnet.ora 文件,可以修改oracle登录认证方式。
    • SQLNET.AUTHENTICATION_SERVICES= (NTS)

      • NTS:基于系统,默认的。
      • NONE:基于Oracle 验证
      • NONE,NTS:二者都验证

(二)Linux,略。

七、丢失 Oracle 管理员密码

1、恢复办法:把原有密码文件删除,生成一个新的密码文件

2、恢复步骤如下:

1)搜索名为 PWD+数据库实例名.ora 文件。一般在\database\PWDorcl.ora

2)删除该文件,建议备份。

3)生成新的密码文件,在doc 下输入命令:

  • orapwd file = 原来密码文件的全路径\密码文件名.ora password=新密码 entries=10;
  • entries=10:允许几个特权用户
  • 密码文件名 一定要和原来的密码文件名一致。

4)重启生效

3、例子:

  • orapwd file=D:\oracle10g\database\PWDorcl.ora password=abc123 entries=10;

八、数据库管理员

时间: 2024-08-08 21:26:11

Oracle基础(二):用户及权限管理的相关文章

Mysql 用户,权限管理的几点理解。

前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql. 公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂..简单是因为网上关于mysql用户,权限管理的帖子很多, 按照上面的做,基本上能解决遇到的问题.复杂是因为如果考虑的特殊的场景,权限管理会让很多新手蛋疼的不要不要的. mysql权限的基础我在这里就不讲了,大家一艘一大把,我这里主要就我的理解在前人基础上做一些解读.公司用的是mysql5.5,所以我的解读仅限于这个版本.

【转】mysql 用户及权限管理 小结

转自:https://www.cnblogs.com/SQL888/p/5748824.html mysql 用户及权限管理 小结 MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户: 1 CREATE USER username IDENTIFIED BY 'password'; 新用户创建完成,但是此刻如果以

linux用户及权限管理

[文件管理.管道.用户及组管理.用户及权限管理]\用户及组管理 用户与组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录.实现用户账号的管理

对liunx系统中用户和权限管理一点小心得

近期才接触Liunx,给我的感觉,并不是很难,但是知识点很多,命令杂,并且附带了茫茫多的选项.接下来我就拿用户和权限管理来举个例子. 一丶用户&组的创建,管理. 用户,顾名思义,就是在系统上的接口进行操作的人. 用户分为:1.管理员(root)2.普通用户(user):系统用户和登录用户 管理员比较好理解,好比说一个国家的国王,拥有对国家最高的指挥权.root在linux系统中就扮演了国王的角色,任何的权限对它来说都形同虚设. 而普通用户,相当于这个国家的公民,必须遵循国家规定的法律. 普通用户

用户和权限管理

一:用户和组 用户分为两类:一个是管理用户,一个是普通用户, 用户类别:一类是系统用户,另一类是登录用户, 用户的标识是UID,16bit二进制数字是0-65535 管理员:0 普通用户:1-65535 3. 组:一是管理员组,二是普通用户组 4.组类别:一类是系统组,一类是登录组 用户标识GID,管理员组:0普通组:1-65535 5.从用户角度划分: 基本组:每个用户至少有一个组 附加组:同时包括在其他组中 私有组:组名同用户名,且包含一个用户 公共组 :组内包含了对个用户 6.groupa

用户的权限管理

用户的权限管理: 1, 普通权限 2,特殊权限 3,文件的特殊属性 4,FACL权限机制 普通权限: 进程安全上下文: 1,判断进程的所者是否为想要操作的文件的属主,若是,就按照属主的权限进行授权,若不是,就转到第二条. 2,判断进程的所有者是否为想要操作的文件的属主中的成员,如果是,就按照属主的权限进行授权,如果不是,转第三条. 3,按照其他用户的权限进行授权. 权限的构成: NODE:使用权 r:可读 w:可写 x:可执行 目录: r:可使用ls命令获得其中所有文件名的列表:ls-l命令来获

实验03 Linux用户和权限管理

一.实验目的 熟悉Linux的用户和权限管理 二.实验环境 CentOS 6.5系统. 三.实验内容 1. 用户的添加.删除.修改 2. 用户组的添加.删除.组成员管理 3. 文件和目录的权限和权限掩码设置 4. 文件和目录的所有者和属组设置 5. 特殊权限的设置 四.实验步骤: (1) 查看/home目录下各目录的权限,了解普通用户主目录的权限设置特点 命令:_ls –ld /home_ (2) 查看当前用户默认权限掩码 默认权限掩码: _umask(0022)_ (3) 创建文件stufil

深入浅出Zabbix 3.0 -- 第四章 主机、用户和权限管理

第四章  主机.用户和权限管理 Zabbix中主机作为一个管理单元,用来管理和组织监控项,它可以包含任意数量和类型的监控项,并且每个主机必须属于至少一个主机组.当主机中的监控项获取监控数据后,Zabbix中创建的用户就可以访问这些数据,同样这些用户必须属于至少一个用户组.你可能注意到不管是主机还是用户,在Zabbix中必须属于至少一个主机组或用户组.为什么要这么做呢?这是因为Zabbix中是通过用户组和主机组来实现用户对主机中监控数据进行访问权限的分配和管理. 4.1主机 4.1.1创建主机 Z

Linux学习笔记:用户的权限管理

在上周清明假期期间,我们仍然在紧张的学习中,今天我们学习了用户的权限管理,用户的权限管理顾名思义即为用户在使用操作系统时所能使用的权限及管理用户使用相应的命令为用户添加相应的权限,其中用户的权限分为普通权限,特殊权限及文件的特殊权限. 以下即为本堂课所学内容整理记录: 普通权限: 进程安全上下文: 1.判断进程的所有者是否为想要操作的文件的属主,如果是,就按照属主的权限进行授权: 如果不是,就转到第2条: 2.判断进程的所有者是否为想要操作的文件的属组中的成员,如果是,就按照属组的权限进行授权:

Linux的用户和权限管理

欢迎大家来到我的博客,首先声明此文是我的***作:若文中有不当之处,还请各位前辈大神多多指点,小生在这里先谢过了.生活总有各种不如意,对我来说眼前的一切就是最好的安排:说实话我并不是很喜欢软件这个专业,我是一个文科男,软件世界里的沟沟坎坎对我来说走起来真的有些吃力,来到大学莫名其妙的进了这个专业,成了IT大海里一个小石头.没办法,既来之则安之:唯有迎头向前才能彰显我辈精神啊:大学毕业我这个小石头便阴差阳错的接触到了软件运维这个行业,带着满满的信心怀揣着美好的前景我加入的Linux培训的大军.这不