数据库安装中最后一步“口令管理”,可对 用户解锁,重置密码。
数据库名: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对某表的操作权限)