Oracle用户、权限、角色管理

一、用户管理

1、创建用户

1.1 创建用户user1,密码为123456,指定默认表空间为user1_tbs,临时表空间为user1_temp

# user1_tbs表空间和user1_temp临时表空间需要提前创建好。
# 创建表空间user1_tbs
SQL> create tablespace user1_tbs
datafile '/u01/app/oracle/oradata/ORCL/datafile/user1.dbf' size 10M
autoextend on next 10M
maxsize 100M;

# 创建临时表空间user1_temp
SQL> create temporary tablespace user1_temp
tempfile '/u01/app/oracle/oradata/ORCL/datafile/user1_temp.dbf' size 10M;

# 创建user1用户
SQL> create user user1 identified by "123456"
default tablespace user1_tbs
temporary tablespace user1_temp;

注意:在创建用户时,不指定的情况下,默认表空间为USERS,临时表空间为TEMP

1.2 创建用户user2时设置密码过期,让用户初次登录必须要修改密码

# 创建user2用户
SQL> create user user2 identified by "123456"
password expire;
# 刚创建的用户没有登录权限,需要有create seesion权限
grant create session to user2
# 测试登录user2
SQL> conn user2/123456
ERROR:
ORA-28001: the password has expired
Changing password for user2
New password:    # 输入密码
Retype new password:   # 再次输入密码
Password changed
Connected.

SQL> conn user2/1234    # 再次登录
Connected.

1.3 创建用户时限制配额

SQL> create user user3 identified by "123456"
default tablespace user3_tbs
temporary tablespace user3_temp
quota 10M on user3_tbs;

注意:

1、如果建立用户时没有为表空间指定QUOTA子句,那么用户在特定表空间上的配额为0,用户将不能在相应的表空间上建立数据对象。

2、要设置用户在指定表空间上不受限制,可以使用QUOTA UNLIMITED ON tablespace_name子句。

2、查看用户

与用户相关的视图:

dba_users :可以查询数据库中所有用户信息

2.1 查看dba_users数据字典的结构

如果不知道查用户什么信息,可以先查看数据结构信息

SQL> desc dba_users;

2.2 查看所有用户信息的主要信息

SQL> select username,default_tablespace,temporary_tablespace 
from dba_users;

2.3 查看特定用户信息

SQL> select username,default_tablespace,temporary_tablespace 
from dba_users
where username='USER1';

2.4 查看用户过期时间,最近登录时间

SQL> select username,account_status,expiry_date,last_login 
from dba_users 
where username='USER2';

2.5 查看特权用户信息

select username,sysdba,sysoper,sysbackup 
from v$pwfile_users;

3、修改用户

2.1 修改用户密码S

SQL> alter user user2 identified by "1234";

2.2 锁定用户或解锁用户

# 锁定用户:将user2锁定
SQL> alter user user2 account lock;

# 连接登录时,显示账号被锁
SQL> conn user2/123456 
ERROR:
ORA-28000: the account is locked


Warning: You are no longer connected to ORACLE.
# 注意:此时没有连接到用户,需要重新登录到sys用户
SQL> alter user user2 account unlock;
SP2-0640: Not connected
SQL> conn sys/xxx as sysdba
Connected.

# 解锁用户:将user2用户解锁
SQL> alter user user2 account unlock;

User altered.

# 连接成功
SQL> conn user2/123456
Connected.

3.3 将用户密码设置为过期

SQL> alter user user1 password expire;
 # 再次登录会发现密码过期,要求重新设置密码
SQL> conn user1/1234
ERROR:
ORA-28001: the password has expired


Changing password for user1
New password: 
Retype new password: 
Password changed
Connected.

3.4 修改默认表空间

# 将user1的默认表空间修改为liyb表空间
SQL> alter user user1 default tablespace liyb;

# 查看user1用户的默认表空间是否改变
SQL> select username,default_tablespace from dba_users where username ='USER1';

3.5 修改用户空间配额

# 当用户配额消耗完,可以给用户添加配额
SQL> alter user user1 quota 100M on liyb;
# 查看表空间配额
SQL> SELECT tablespace_name, bytes/10.24/1024 as MB, max_bytes 
FROM dba_ts_quotas 
where tablespace_name='LIYB';

4、删除用户

SQL> drop user liyb;
 # CASCADE:级联删除
 # 如果用户包含数据对象,则必须使用cascade进行删除
SQL> drop user xxx cascade;

二、权限管理

用户创建之后并没有操作数据库的权限,仅表示该用户在Oracle上进行了注册。需要有操作权限,需要具有DBA权限的用户对其进行授权

1、系统权限和对象权限

系统权限:用户在数据库范围内能够执行某种操作,是在系统级对数据库进行存取和使用的机制。例如,用户是否能够连接到数据库系统(SESSION权限)上,以及是否能够执行系统级的DDL语句(如CREATE、ALTER和DROP)等。

对象权限:是指某一个用户对其他用户的表、视图、序列、存储过程、函数、包等进行操作的权限。不同类型的对象具有不同的对象权限,对于某些模式对象,如簇、索引、触发器、数据库链接等没有相应的实体权限,这些权限由系统权限进行管理。

2、授权给用户

刚创建的用户直接登录,会出现以下报错

SQL> conn user1/1234
ERROR:
ORA-01045: user USER1 lacks CREATE SESSION privilege; logon denied

Warning: You are no longer connected to ORACLE.

2.1 查看Oracle具有的所有权限

SQL> select name,privilege from system_privilege_map;

2.2 给用户授权系统权限

SQL> grant create session,create table,create view to user1;
SQL> grant create user,create session,create table,create view,create procedure to user2  with admin option;  

with admin option:表示被授权者可以将权限再授予其他用户,如果被授权者将权限授予给另外一个用户后,自身的权限被回收,并不影响另外一个用户的权限。

2.3 给用户授权对象权限

# 将scott用户的emp表相关权限授权给user1
SQL> grant alter,excute,insert,update,select,delete on scott.emp to user1;

# 授权给user2同时,让其有授权给其他用户权限
SQL> grant alter,excute,insert,update,select,delete on scott.emp to user2 
with grant option;

with grant option:可以将已拥有的权限授予其他用户。如果将权限授权给其他用户,权限被回收后,其他用户也无法使用该权限。

3、查看授权信息

3.1 与权限相关的数据字典

dba_users:数据库层面的用户基本信息,可以查所有用户信息

dba_sys_privs:已授予用户或角色的系统权限

user_sys_privs:当前用户所拥有的系统权限

dba_tab_privs:数据库的对象权限信息

user_tab_privs:当前用户所拥有的对象权限

user_tables:查看当前用户创建的所有表信息

all_tables:数据库上所有的表信息

3.2 查询用户所拥有的系统权限

# 在sys用户下查看user1具有的系统权限
SQL> select privilege from dba_sys_privs where grantee='USER1';

# 在当前用户下查看user2具有的系统权限
SQL> conn user2/123456
SQL> select privilege from user_sys_privs;

3.3 查询用户所拥有的对象权限

# 在sys用户下查看user1的对象权限
SQL> select table_name,owner,privilege from dba_tab_privs where grantee='USER1';
# 在user2用户下查看对象权限
SQL> conn user2/123456
SQL> select table_name,privilege from user_tab_privs;

4、回收权限

4.1 回收系统权限

SQL> revoke create session,create table,create view from user1;

4.2 回收对象权限

SQL> revoke alter,excute,insert,update,select,delete on scott.emp from user1;

三、角色

1、角色与用户,权限的关系

角色是一个独立的数据库实体,它包括一组权限。角色是权限的集合,角色可以被授予任何用户,也可以从任何用户收回。角色是用于简化权限的管理。

2、管理角色

2.1 创建角色

# 创建角色,不使用密码

SQL> create role role_1;

# 创建带有密码的角色
SQL> create role role_2 identified by "123456";

2.2 将权限授予角色

SQL> grant create session,create table to role_1;
SQL> grant create session,create table,create view to role_2;

2.3 将角色授权给用户

SQL> grant role_1 to user1;
SQL> grant role_2 to user2;

2.4 查看用户权限

与角色相关的数据字典:

dba_role_privs:数据库上所有用户的角色

role_sys_privs:当前用户所拥有的角色权限

# 在sys用户下看
SQL> select granted_role from dba_role_privs where grantee ='USER1';
# 进入user1用户,查看当前权限
SQL> select granted_role from user_role_privs ;

2.5 修改角色密码

# 修改
SQL> alter role role_2 identified by "1234"; 
SQL> alter role role_2 not identified;

2.6 删除角色

SQL> drop role role_1;
相关推荐
黑牛先生1 分钟前
【Linux】进程-PCB
linux·运维·服务器
Karoku0667 分钟前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
小技与小术1 小时前
数据库表设计范式
数据库·mysql
安迁岚1 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚1 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Loganer1 小时前
MongoDB分片集群搭建
数据库·mongodb
LKID体1 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
打码人的日常分享2 小时前
商用密码应用安全性评估,密评整体方案,密评管理测评要求和指南,运维文档,软件项目安全设计相关文档合集(Word原件)
运维·安全·web安全·系统安全·规格说明书
vmlogin虚拟多登浏览器2 小时前
虚拟浏览器可以应对哪些浏览器安全威胁?
服务器·网络·安全·跨境电商·防关联
刘大浪2 小时前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis