Oracle--用户管理

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

用户管理在 Oracle 数据库中至关重要。一个服务器通常只运行一个 Oracle 实例,而一个 Oracle 用户代表一个用户群,他们通过该用户登录并操作数据库对象(如表、视图等)。实际开发中,不同项目组通常使用独立的 Oracle 用户,避免相互干扰,同时通过权限控制实现跨模块的数据访问。一个 Oracle 用户可以看作是一个业务模块,不同模块间的关联通过权限管理实现

1、用户模式

Oracle 数据库引入了模式(Schema)概念来管理用户创建的数据库对象。每个用户创建的对象都属于该用户的模式。

模式内的对象默认不可被其他模式直接访问,即使有权限,也需要通过“模式名.对象名”方式访问(如 scott.dept

# 当其他用户账号下,比如system账号下,要访问scott账号下创建的表dept,需要在表名前加上该表的所属账号scott
select * from scott.dept;

2、用户登录数据库

SQLPlus 是 Oracle 自带的客户端工具,用于与数据库交互。连接身份分为三种:

连接身份代表着该用户连接数据库后享受的权限,oracle有三种身份如下:

  • sysdba:数据库管理员身份,具有最高权限(如启动/关闭数据库、备份恢复等)
  • sysoper:数据库操作员身份,权限低于 sysdba
  • normal:普通用户,默认身份,只能操作自身模式的对象

sys用户必须用sysdba才能登录(使用:sys as sysdba),system用户(数据库管理员身份,直接使用:system)

sqlplus登录用户语法:sqlplus username/password@serviceName [as 连接身份]

 # 以系统管理员登录数据库:sqlplus system/Oracle23ai@FREE 

切换用户:connect username/password@serviceName [as 连接身份]

 connect sys/Oracle23ai@free as sysdba

SQLPlus 支持连接本地和远程数据库。

 语法:conn 用户名/密码@服务器连接字符串 as 连接身份(此身份需要解锁)比如:connect sys/oracle23ai@192.168.1.133:1521/free as sysdba;

3、基本概念

  • CDB--Container Database,即容器数据库

  • PDB--Pluggable Database,即可插拔数据库

  • 公共用户--CDB公共用户,必须以C##或c##开头,Oracle会在每个PDB中同时创建该用户;

  • 本地用户--PDB的用户,本地用户所在PDB中必须是唯一的,每个PDB可以有不同的本地用户;

CDB和PDB是数据库中的两种重要概念

CDB是一个容器数据库,名称为CDB$ROOT,其作用就是系统数据库,sys等账号都保存在里面,同时它可以管理PDB数据库。可以容纳多个PDB类似于一个父容器。在CDB环境中,用户称为公共用户,而在PDB环境中,用户称为本地用户。

PDB是一种可插拔数据库,它可以在CDB中独立地创建、停止和启动。每个PDB都有自己的数据文件、控制文件和日志文件,并且可以独立的进行备份和恢复操作。PDB提供了更高的隔离性和安全性,因为每个PDB都有自己的安全上下文,并且只能通过指定的用户访问。

3.1、常用命令
 --打开PDBalter pluggable database pdb名称 open;--关闭PDBalter pluggable database pdb名称 close;--切换PDBalter session set container=pdb名称(指定容器);--查看当前所在容器show con_name;​--查看所有的PDBshow pdbs;​--切换到mypdbalter session set container=mypdb;
3.2、创建用户
  • 每个用户都有自己的用户名和密码,以及权限和角色,用户访问和管理数据库中的对象
  • 使用CREATE和DROP来创建和删除用户。用户对它所拥有的对象具有所有的增删改的权限
  • 可以使用ALTER USER命令来修改用户的属性,如密码、默认表空间以及存储配额
  • 用户可以被授予不同的权限或角色
 sqlplus system/Oracle23ai@free    --连接数据库(管理员角色)​# CDB(Contaniner Database)容器中 创建用户时,前面必须添加C##,而PDB(Pluggable Database)数据库不需要加前缀#COMMON USERS(普通用户):经常建立在CDB层,用户名以C##或c##开头;#LOCAL USERS(本地用户):仅建立在PDB层,建立的时候得指定CONRAINER​--看数据库是否为CDBselect CDB from v$database;--创建用户create user C##fox identified by Oracle23ai;​--配置权限grant dba,connect,resource,create view to C##fox;grant create session to C##fox;grant select any table to C##fox;grant update any table to C##fox;grant insert any table to C##fox;​--连接登录测试conn c##fox/Oracle23ai@free​--修改用户密码、锁定状态alter user c##foxidentified by ******    --修改密码account lock;           --修改用户处理锁定状态或者解锁状态--删除用户drop user c##fox;

虽然创建了用户,但还不能使用,需要给予用户授于数据库角色和设置用户权限

3.3、数据库角色

Oracle数据库角色是若干系统权限的集合,给Oracle用户进行授权数据库角色 ,就是等于赋予该用户若干数据库系统权限。常用数据库角色如下:

  • CONNECT:允许用户连接数据库,建立会话。
  • RESOURCE:允许用户创建数据库对象(如表、视图、存储过程等)。
  • DBA:拥有所有系统权限,可管理数据库和授权其他用户。

三个数据库角色对应有三个连接身份:

4、用户权限

Oracle数据库用户权限分为:系统权限和对象权限两种

  • 系统权限:如 create session(登录权限)、create table(创建表权限)。
  • 对象权限:如对表的 select、insert、update、delete操作权限。

5、授权操作

 --GRANT 数据库角色 to 用户grant connect to C##fox;        --授于connect角色(必须)grant resource to C##fox;       --授于resource角色grant dba to C##fox;            --授于管理员dba角色​--GRANT 用户的系统权限 to 用户grant create session to C##fox;     --授于用户登录数据库的权限​--授于用户操作表空间的权限grant unlimited tablespace to C##fox;grant create tablespace to C##fox;grant alter tablespace to C##fox;grant drop tablespace to C##fox;grant manage tablespace to C##fox;​--操作表grant create table to C##fox;   (包含有create index权限、alter table、drop table权限)--操作视图grant create view to C##fox;    (包含有alter view、drop view权限)--操作触发器grant create trigger to C##fox; (包含有alter trigger、drop trigger权限)--操作存储过程grant create procedure to C##fox;(包含有alter precedure,drop procedure和function以及package权限)--操作序列grant create sequence to C##fox;;   (包含有创建、修改、删除以及选择序列)--回退段grant create rollback segment to C##fox;grant alter rollback segment to C##fox;grant drop rollback segment to C##fox;--同义词grant create synonym to C##fox; (包含drop sysnonym权限)grant create public sysnonym to C##fox;grant drop public sysnonym to C##fox;--关于用户grant create user to C##fox;grant alter user to C##fox;grant become user to C##fox;grant drop user to C##fox;--关于角色grant create role to C##fox;--操作概要文件grant create profile to C##fox;grant alter profile to C##fox;grant drop profile to C##fox;--从sys用户所拥有的数据字典表中进行选择grant select any dictionary to C##fox;​--GRANT 用户的对象权限 on 对象 TO 用户grant select,insert,update,delete on emp to C##fox;--把emp表的全部操作权限授于fox用户grant all on emp to C##fox;

6、查看用户的权限或角色

6.1、查看用户
 show user;          //查看当前用户名​--查看所有用户select * from dba_users;select * from all_users;select * from user_users;   //查看当前用户
6.2、查看角色
 --1、当前用户被激活的全部角色select * from session_roles;--2、当前用户被授于的角色select * from user_role_privs;--3、全部用户被授于的角色select * from dba_role_privs;--4、查看某个用户所拥有的角色select * from dba_role_privs where grantee='用户名';--5、一个角色包含的系统权限select * from dba_sys_privs where grantee='角色名';select * from dba_sys_privs where grantee='CONNECT';       --connect要大写或者select * from dba_sys_privs where role='角色名';--6、一个角色包含的对象权限select * from dba_roles;--7、查看所有角色select * from dba_roles;
6.3、查看权限
 --1、基本权限查询select * from session_privs;    --当前用户所拥有的全部权限select * from user_sys_privs;   --当前用户的系统权限select * from user_tab_privs;   --当前用户的对象权限select * from dba_sys_privs;    --查询某个用户所拥有的系统权限select * from role_sys_privs;   --查看角色(只能查看登录用户拥有的角色)所包含的权限--2、查看用户的系统权限(直接赋值给用户或角色的系统权限)select * from dba_sys_privs;select * from user_sys_privs;--3、查看用户的对象权限select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;--4、查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)select * from v$pwfile_users;
6.4、补充
 --1、以下语句可以查看Oracle提供的系统权限select name from sys.system_privilege_map--2、查看一个用户的所有系统权限(包含角色的系统权限)select privilege from dba_sys_privs where grantee='SYSTEM'unionselect privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SYSTEM');--3、查询当前用户可以访问的所有数据字典视图select * from dict where comments like '%grant%';--4、显示当前数据库的全称select * from global_name

7、取消用户权限

 --Revoke 对象权限 on 对象 from 用户revoke select,insert,update,delete on emp from C##fox;​--Revoke 系统权限 from 用户grant create session to C##fox;     --授于用户登录数据库的权限revoke SELECT ANY TABLE from C##fox;​--Revoke 角色(role) from 用户revoke RESOURCE from C##fox;

学习永无止境,让我们共同进步!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UOS+N 卡 + CUDA 环境下 X86 架构 DeepSeek 基于 vLLM 部署与 Dify 平台搭建指南

一、文档说明 本文档是一份关于 DeepSeek 在X86架构下通vLLM工具部署的操作指南,主要面向需要在UOSN卡CUDA环境中部署DeepSeek的技术人员,旨在指导文档使用者完成从 Python 环境升级、vLLM 库安装、模型部署到 Dify 平台搭建的全流程操作。 二、安装Pyt…

操作系统之shell实现(下)

🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…

Spark,流量统计案例

提前创好一个文件夹分为四个类 FlowBean中的代码内容为:package org.example.flow; import org.apache.hadoop.io.Writable; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; //hadoop 序列化 //三个属性:手机…

下载油管视频 - yt-dlp

文章目录 1. yt-dlp与you-get介绍1.1 主要功能对比1.2 使用场景1.3 安装 2. 基本命令介绍2.1 默认下载视频2.2 指定画质和格式规则2.3 下载播放列表2.4 备注 3. 参考资料 之前只使用you-get下载b站视频,当时了解you-get也可下载油管视频,但之前无此需求&…

基于javaweb的SSM+Maven教材管理系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

VS2022+QT环境配置及基本操作

参考文章 2025最新!Visual Studio 2022 QT6.7 环境配置全攻略:一键搞定安装与乱码问题,开发效率翻倍!(全网最详细教程,手把手教你搭建完美开发环境!)_vs2022 qt-CSDN博客 下载QT …

使用percona-toolkit同步mysql表数据

背景 做了主备mysql的配置以后,可能因为切换过程造成不一致的情况,这个时候可以处理的方式是全量导入再导出,这个有个问题就是操作的数据太多了 我们只需要数据补全同步即可 mysql的同步是基于binlog的,如果没有记录的部分的数据…

MDG 实现后端主数据变更后快照自动刷新的相关设置

文章目录 前言实现过程BGRFC期初配置(可选)设置 MDG快照 BGRFC维护BP出站功能模块 监控 前言 众所周知,在MDG变更请求创建的同时,所有reuse模型实体对应的快照snapshot数据都会记录下来。随后在CR中,用户可以修改这些…

重装系统 之 Dell戴尔服务器 PowerEdge R750xs + window server2012r2 || 2016

因要求需要给新服务器装个 win server2012或者2016系统 XXX使用U盘制作PE系统U盘安装系统不行,适合普通win8,win10,win11U盘制作PE系统U盘安装win10系统教程U盘制作PE系统U盘安装win10系统教程https://mp.weixin.qq.com/s/t0W8aNJaHPAU8T78nh…

基于Spring Security 6的OAuth2 系列之二十六 - 终章

之所以想写这一系列,是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级…

一键配置多用户VNC远程桌面:自动化脚本详解

在当今远程工作盛行的时代,高效且安全地管理多用户远程桌面访问变得至关重要。本文将介绍一个强大的自动化脚本,该脚本能够快速创建用户并配置VNC远程桌面环境,大大简化了系统管理员的工作。 一、背景介绍 在Linux系统中,手动配置VNC服务器通常需要执行多个步骤,包括创建…

IOT项目——双轴追光系统

双轴太阳能追光系统 - ESP32实现 系统概述 这个系统使用: ESP32开发板2个舵机(水平方向和垂直方向)4个光敏电阻(用于检测光照方向)适当的电阻(用于光敏电阻分压) 接线示意图 --------------…

Maven集成模块打包使用

文章目录 1.问题思考(如何对集成模块进行打包)2.问题解决 (如何对集成模块进行打包)3.使用者使用该jar包(jar包安装本地仓库和使用) 1.问题思考(如何对集成模块进行打包) 思考:假设有这么一个场…

OpenVINO教程(二):图片目标检测推理应用

YOLO模型物体检测 下面是一个简单的python程序,他的功能是使用yolo11n模型对coco_bike.jpg照片进行检测,并显示检测结果 代码步骤如下: coco_bike.jpg照片加载yolo模型使用模型进行detect推理显示推理结果 下面是完整的代码 from pathlib import Pathimport urllib.request…

聚类算法(K-means、DBSCAN)

聚类算法 K-means 算法 算法原理 K-means 是一种基于类内距离最小化的划分式聚类算法,其核心思想是通过迭代优化将数据划分为 K 个簇。目标函数为最小化平方误差(SSE): S S E ∑ i 1 K ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2…

Oracle在ERP市场击败SAP

2024年,甲骨文(Oracle)以87亿美元的ERP收入和6.63%的市场份额,首次超越SAP,成为全球最大的ERP应用软件供应商,结束了SAP自上世纪80年代以来在该领域的长期霸主地位。据APPS RUN THE WORLD的市场调研&#x…

嵌入式面试高频笔试题目解析

一、基础概念与 C 语言核心题 1. 指针与内存操作 典型题目: char str[] = "hello"; char *ptr = "world"; str[0] = H; // 合法吗? ptr[0] = W; // 合法吗?为什么?解析: str 是栈上数组,可修改内容,str[0]=H 合法。ptr 指向常量字符串区,修改会…

【Python】Selenium切换网页的标签页的写法(全!!!)

在使用selenium做网站爬取测试的时候,我们经常会遇到一些需要点击的元素,才能点击到我们想要进入的页面, 于是我们就要模拟 不断地 点点点击 鼠标的样子。 这个时候网页上就会有很多的标签页,你的浏览器网页标签栏 be like: 那…

MySQL GTID模式主从同步配置全指南:从配置到故障转移

前言 MySQL主从复制是企业级数据库架构的基础,而GTID(Global Transaction Identifier)模式则是MySQL 5.6版本后推出的革命性复制技术。本文将详细介绍如何配置基于GTID的主从同步,并包含实用的故障转移操作指南。 一、GTID模式核心优势 相比传统基于…

MAC系统下完全卸载Android Studio

删除以下文件 /Applications/Android Studio.app /Users/用户名/Library/Application Support/Google/AndroidStudio2024.2 /Users/用户名/Library/Google/AndroidStudio /Users/用户名/Library/Preferences/com.google.android.studio.plist /Users/用户名/Library/Cache…