數據庫安裝中最后一步“口令管理”,可對 用戶解鎖,重置密碼。
數據庫名:orcl
sys:
default password:manager
主要存儲數據字典與view,擁有dba、sysdba、sysoper的角色與權限,是權限最高的用戶。
system:
default password:chang_on_install
擁有dba、sysdba的角色與權限,若以sysdba角色登錄,實質仍然以sys作為用戶登錄。
使用PL/SQL “新建命令”,可以證實

--創建用戶
create user 用戶名 identified by 密碼
--刪除用戶
drop user 用戶名 cascade(如果用戶下,已有table,view..)
--給予角色與權限
權限:規范用戶能干什么事,比如 create table
角色:就是權限的集合,是擁有多項權限的,一個或多個權限
用戶被創建后,如果沒有分配先關權限,是不能夠登錄數據庫的。
--grant 角色名/權限名 to 用戶
======================================================================
--角色
1.分類
預定義角色: connect、resource、dba三種角色。
自定義角色:
connect 角色: 擁有 alter session、create cluster、create database link、create table、create view、create sequence 權限
resource角色:允許用戶在任何一個表空間建表
隱含了 unlimited tablespace 系統權限,擁有create cluster、create indextype、create table、
create sequence、create type、create procedure、create trigger權限
dba角色:擁有所有的系統權限,但不具備 sysdba sysoper的特權,啟動和關閉數據庫、建立角色。
新建用戶不能創建表,可嘗試 grant unlimited tablespace to UserName;
2.創建角色
create role RoleName not identified; ---不用驗證方式
create role RoleName identified by RolePwd; --驗證的方式
3.角色賦予
grant slect on tableName/viewName to roleName;
如果當前用戶=sys or system,則可以使用
select * from dba_roles 查看所有的角色
select * from dba_role_privs 查看所有用戶擁有的角色
做了個測試 select count(*) from dba_role_privs where grantee='SYS' =select count(*) from user_role_privs
如果是普通用戶,可以使用
select * from user_role_privs 查看當前用戶被授予的角色
這些系統表其實是數據字典。
1、動態數據字典:
以v$xxx開始的數據字典,反映數據庫動態運行狀況,在不同時間查詢會得到不同的結果。
2、DBA數據字典:
是以DBA_xxx表示,存儲數據庫結構,查詢DBA數據字典可以反映數據庫結構設置,
管理磁盤空間和表空間、事務與回退段、用戶與表空間等信息。
3、用戶數據字:
是以USER_xxx表示,反應用戶所創建的實體信息
4、ALL_xxx類數據字典:
表示用戶所創建的實體及用戶有權可以存取的實體,如 all_users
4.角色刪除
一個用戶若想刪除某個role,應當具有 drop any role 權限。
5.查看系統角色所擁有的權限
select * from role_sys_privs
======================================================================
--權限
系統權限:描述用戶對數據庫訪問的權限
對象權限:用戶對其他用戶的數據對象操作的權限
包含select、insert、update、delete、exec、all、index、refereces、execute。
其中all代表select、insert、update、delete四種權限
如果希望用戶A可以操作用戶B某張表,則可以
---grant all on UserA.tableName to UserB (with grant option 即B可以將這個權限再次賦予用戶C)
---select * from UserA.tableName
---revoke all on tableName from UserA (回收用戶A對某表的操作權限)
