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.pswp.cn/web/76835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76835.shtml
英文地址,請注明出處:http://en.pswp.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…