ORACLE的用户维护与权限操作

1 创建和维护用户

sql语句中,不区分大小写,但是值区分大小写(单引号中的内容)

1.1 创建用户

  • 语法:create user 用户名 identified by 密码;

此时用户创建成功后,没有任何权限,包括登录数据库。

  • 示例:

    创建用户firstuser密码为firstuser

    create user firstuser identified by firstuser;

1.2 更改用户密码

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

  • 示例:

    将firstuser用户密码修改为userfirst

    alter user firstuser identified by userfirst;

1.3 删除用户

  • 语法:drop user 用户名 [cascade]

如果要删除的用户已经创建了表,那么就需要在删除的时候带参数cascade。

  • 示例:

    drop user firstuser;

1.4 锁定用户

  • 语法:alter user 用户名 account lock;

将用户锁定后不能登录

  • 示例:

    锁定scott用户

    alter user scott account lock;

    登录失败,提示账户已锁定

    conn scott/tiger;

1.5 解锁用户

  • 语法:alter user 用户名 account unlock;

  • 示例:

    解除scott用户的锁定状态

    alter user scott account unlock;

    登录scott用户 connect可以简写成conn

    connect scott/tiger;

    查看当前用户

    show user;

    返回之前的用户

    conn sys/Oracle11g as sysdba;

1.6 更改用户表空间-无

2 用户权限维护

2.1 什么是权限

权限就是指由管理员赋予某个用户能够进行某个操作的权力。

比如赋予用户firstuser登录、建表的权限。

2.2 权限分类

系统权限(用户登录,创建对象):系统规定用户使用数据库的权限。(系统权限是对用户而言)。

对象权限(操作指定对象的某种权限):某种权限用户对其它用户的表或视图的存取权限(对象权限是针对表或视图而言的)。

2.3 常用系统权限角色

DBA: 拥有全部特权,是系统最高权限,可以登录用户、创建表、创建库。

RESOURCE:普通用户权限,只能创建表、不能创建库。

CONNECT:只可以登录Oracle。

对于普通用户:授予connect, resource权限。

对于DBA管理用户:授予dba、connect,resource权限。

2.4 权限的赋予

需要使用高权限用户登录(如system、sys、scottas sysdba 用户等)

根据需要赋予、收回相应权限

2.4.1 系统权限的赋予

  • 语法:grant 权限1,权限2 to 用户名

  • 示例:

    创建用户

    create user xykj identified by zzh;

    赋权

    grant dba to xykj;

    登录

    conn xykj/zzh;

    查看其它用户的表

    select * from scott.emp;

    查看权限

    select * from dba_role_privs where GRANTEE='XYKJ';

    创建用户

    create user xykj1 identified by zzh;

    赋权

    grant resource,connect to xykj1;

    登录

    conn xykj1/zzh;

    查看其它用户的表 权限不同提示表不存在

    select * from scott.emp;

    查看权限 权限不足,提示不存在

    select * from dba_role_privs where GRANTEE='XYKJ1';

2.4.2 对象权限的赋予

需要高权限用户

  • 对象的权限:

select:查询权限

insert:插入数据权限

delete:删除行权限

update:修改行内容权限

all:所有权限

  • 语法:grant 权限 on 用户.表 to 用户;

  • 示例:

    --查询失败,没有权限
    conn xykj1/zzh;
    select * from scott.emp;

    --赋予查询权限
    conn xykj/zzh;
    grant select on scott.emp to xykj1;
    conn xykj1/zzh;
    select * from scott.emp;

    --赋予修改权限
    conn xykj/zzh;
    grant update on scott.emp to xykj1;
    conn xykj1/zzh;
    update scott.emp set sal=1400 where empno=7934;
    select * from scott.emp;

    --收回修改权限
    conn xykj/zzh;
    revoke select on scott.emp from xykj1;
    revoke update on scott.emp from xykj1;

2.4.3 对象权限的传递

  • 语法:grant select on 用户.表 to 用户 with grant option;

  • 示例:

    --高权限用户赋予xykj1用户查询权限,允许权限传递
    conn xykj/zzh;
    grant select on scott.emp to xykj1 with grant option;
    conn xykj1/zzh;
    select * from scott.emp;

    --xykj1用户通过权限传递,赋予xykj2用户查询权限
    grant select on scott.emp to xykj2;
    conn xykj2/zzh;
    select * from scott.emp;

    --当xykj1的权限被收回时,xykj2的权限也会被自动收回
    conn xykj/zzh;
    revoke select on scott.emp from xykj1;
    conn xykj1/zzh;
    select * from scott.emp;
    conn xykj2/zzh;
    select * from scott.emp;

2.5 查询用户拥有权限

可以从数据字典(系统表)中查询用户拥有的权限。

  • 语法:select * from dba_role_privs where GRANTEE='用户名';
  • 注意事项

需要dbs权限

所有的用户名必须大写

  • 示例:

    select * from dba_role_privs where GRANTEE='xykj';
    select * from dba_role_privs where GRANTEE='XYKJ';

2.6 权限的收回

2.6.1 系统权限的收回

需要高权限用户

  • 语法:revoke 权限 from 用户名;

  • 示例:

    收回xykj1的resource权限

    revoke resource from xykj1;

    查看xykj1的权限

    select * from dba_role_privs where GRANTEE='XYKJ1';

2.6.2 对象权限的收回

  • 语法:revoke 权限 on 用户.表 from 用户;

  • 示例:

    revoke select on scott.emp from xykj1;
    revoke update on scott.emp from xykj1;

3 管理用户口令

3.1 Profile概述

Profile是口令限制,资源限制的命令集合,当建立数据库时,ORACLE会自动建立名字为DEFAULT的Profile。当建立用户没有指定Profile选项,那么ORACLE就会将DEFAULT分配给用户。

Profile就是数据库设定的操作限制,类似于ATM机的3次密码错误就吞卡一类的规则。

3.2 Profile使用步骤

3.2.1 创建profile

  • 指定scott用户最多只能尝试3次登录操作,锁定时间为2天

    --建立profile及规则
    create profile lock_account
    limit failed_login_attempts 3
    password_lock_time 2;

    --将profile 赋予scott 用户
    alter user scott profile lock_account;

    conn scott/tige;
    --登录3次错误,账户被锁定,正确密码也无法登录
    conn scott/tiger;

    --想要登录需等待两天后,或手动解锁
    conn xykj/zzh;
    alter user scott account unlock;
    conn scott/tiger;

  • 要求用户每10天要修改登录密码,宽限期为2天

    create profile myprofile
    limit password_life_time
    10 password_grace_time 2;

3.2.2 删除prodile

复制代码
--删除名为myprofile的口令
drop profile myprofile cascade

3.3 用户连接和退出

  • 切换用户:conn 用户/密码 [as sysdaba];

    conn scott/tiger;

  • 注销当前用户

    disc;

  • 查询当前用户

    show user;

相关推荐
77qqqiqi42 分钟前
mp核心功能
java·数据库·微服务·mybatisplus
Jonariguez2 小时前
Mysql缓冲池和LRU
数据库·mysql
@Jackasher2 小时前
MySQL的存储引擎
数据库·mysql
程序员编程指南3 小时前
Qt 并行计算框架与应用
c语言·数据库·c++·qt·系统架构
Jonariguez3 小时前
Mybatis
数据库·oracle·mybatis
KaiwuDB4 小时前
KWDB在虚拟机下的unbuntu24.04x86-64版本下编译安装实践
数据库
DolphinDB4 小时前
基于 TextDB 构建 DolphinDB 实时日志高效存查的实践
数据库
小王子10245 小时前
Django模型关系:从一对多到多对多全解析
数据库·mysql·django·orm
南玖yy6 小时前
C++多态:面向对象编程的灵魂之
运维·开发语言·数据库·c++·后端·c·c语音