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;

相关推荐
憧憬成为web高手13 分钟前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学26 分钟前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh2 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z123456789863 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD3 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
TlSfoward4 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记5 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发5 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB5 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
欲速不达88205 小时前
Mysql并发DML锁等待的优化
数据库·mysql