资源描述
linux:
SYS、SYSTEM
数据库中所有字典表和视图都存储在SYS模式中,
SYS主要用来维护系统信息和管理实例。
SYSTEM是默认的ORACLE系统管理员,
通常通过SYSTEM用户管理数据库用户、权限和存储等。
oracle:orapwd file=... password=... entries=5(表示
该密码文件最多可容纳具有sysdba权限的5个用户)
entries是可以保存的记录个数,每个具有sysdba或sysoper
权限的用户算一个记录,如果一个用户同时具有sysdba和
sysoper的权限,则只占一个记录。
数据库启动后可以通过v$pwfile_users
来查看密码文件中记录的情况。
但是entries并不是一个准确的值,也就是说,如果我们
设置entries为10,可能会有超过10个用户可以具有
sysdba或者sysoper的权限
当不指定entries值或者指定的entries的值为0-4的时候,
可以有五个用户具有sysdba或者sysoper的权限。
sysoper和sysdba权限 在DB的字典视图中无
sysoper: startup,shutdown,alter database open|mount,
alter database backup controlfile,
alter tablespace begin/end backup,recover database
alter database archivelog,restricted session
sysdba: (除了sysoper的所有权限以外还拥有的权限)
sysoper privileges with admin option, --授予某一个用户sysoper的权限
create database,
recover database until --恢复数据库到一个任意点
sys:
select * from v$pwfile_users //该视图记录了当前密码文件中的用户记录
sys true true
sys:
grant connect to lh; //授予连结权限,否则该用户将不能以as sysdba方式以外的方式连结
grant sysdba to lh;
给用户授与sysdba权限的过程就是把密码从数据字典复制
到了密码文件中的过程。
select * from v$pwfile_users
sys true true
lh true false
sqlplus lh/lh as sysdba //任何有sysdba权限的用户以sysdba权限登录系统,实际上都是以sys用户登录
SQL> show user
USER is "SYS"
grant sysoper to lh;
sys:
select * from v$pwfile_users
sys true true
lh true true
SQL> connect u1/u1 as sysdba
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.
remote
remote_login_passwordfile //该参数为一个初始化参数,可以限制密码文件中用户登录时(远程和本地登录)的校验方式
none/shared/exclusive //不使用密码文件验证/使用密码文件验证/老板本的使用密码文件验证参数
alter system set remote_login_passwordfile=none scope=spfile;
create pfile from spfile;
shutdown immediate
startup
D:\>sqlplus sys/oracle@abc as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
sqlnet.ora
sqlnet.authentication_services=none/all //sqlnet.ora文件中的登录验证,不使用操作系统验证/采用所有验证方式
alter system set remote_login_passwordfile=shared scope=spfile;
create pfile from spfile;
shutdown immediate
startup
权限
系统权限
对象权限
角色
managing privileges
sys:
drop user u1 cascade;
create user u1 identified by u1
default tablespace users
temporary tablespace temp;
connect u1/u1
connect sys/oracle as sysdba
grant create session to u1;
connect u1/u1
create table test(id number,name varchar2(20));
connect sys/oracle as sysdba
grant create table to u1;
connect u1/u1
create table test(id number,name varchar2(20));
connect sys/oracle as sysdba
alter user u1 quota 10M on users; //给u1用户在users表空间上授予了10M的空间使用权
connect u1/u1
create table test(id number,name varchar2(20));
create table test2(id number,name varchar2(20))
tablespace sale_ts;
connect sys/oracle as sysdba
alter user u1 quota 10M on sale_ts;
connect u1/u1
create table test2(id number,name varchar2(20))
tablespace sale_ts;
sys:
create role rt;
grant create table,create session to rt;
select * from role_sys_privs where role='RT'
grant rt to qw;
grant select on lh.test to qw;
grant update (age) on lh.test to qw;
select * from system_privilege_map //查看可用的系统权限名称列表
select * from dba_role_privs where grantee='QW' //查看QW用户的数据库角色
select * from dba_sys_privs where grantee='QW' //查看QW用户的系统权限
select * from dba_tab_privs where grantee='QW' //查看QW用户的对象权限
select * from DBA_COL_PRIVS where grantee='QW' //查看QW用户的列权限
select * from dba_ts_quotas //查看QW用户的配额
1.system privileges:
view => system_privilege_map ,
dba_sys_privs,session_privs
2.grant system privilege
sql> grant CREATE ANY SEQUENCE to a //赋予a用户在任何用户上创建sequence的权限
sql> create sequence b.seq //在b用户上创建了一个sequence名为seq
sql> grant create session,create table to managers;
sql> grant create session to scott with admin option;
with admin option can grant or revoke privilege from any user or role;
3.sysdba and sysoper privileges: 在DB的字典视图中无
sysoper: startup,shutdown,alter database open|mount,alter database backup controlfile,
alter tablespace begin/end backup,recover database
alter database archivelog,restricted session
sysdba: sysoper privileges with admin option,create database,recover database until
sys:sysdba,sysoper v$pwfile_users
Sysdba权限认证过程主要涉及ORACLE中的相关参数和配置文件
sys:
select * from v$pwfile_users
sys true true
sys:
grant sysdba to lh;
select * from v$pwfile_users
sys true true
lh true false
sqlplus lh/lh as sysdba
SQL> show user
USER is "SYS"
grant sysoper to lh;
sys:
select * from v$pwfile_users
sys true true
lh true true
SQL> connect u1/u1 as sysdba
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.
4.password file members: view:=> v$pwfile_users
5.O7_dictionary_accessibility =true restriction access to view or tables in other schema
6.revoke system privilege
sql> revoke create table from karen;
sql> revoke create session from scott;
7.grant object privilege
sql> grant execute on dbms_pipe to public;
sql> grant update(first_name,salary) on employee to karen with grant option;
8.display object privilege : view => dba_tab_privs, dba_col_privs
9.revoke object privilege
sql> revoke execute on dbms_pipe from scott [cascade constraints];
manager role
1.create roles
sql> create role sales_clerk;
sql> create role hr_clerk identified by bonus;
sql> create role hr_manager identified externally;
2.给角色授权
与给用户授权基本相同,但是系统权限UNLIMITED TABLESPACE、
WITH GRANT OPTION不能授予角色,不能用一条GRANT语句同时
授予系统权限和对象权限。
sql> GRANT CREATE SESSION TO public_role WITH ADMIN OPTION
sql> GRANT SELECT ON scott.emp TO public_role
sql> GRANT INSERT,UPDATE,DELETE ON scott.emp to private_role
3.modify role
sql> alter role sales_clerk identified by commission; //修改验证的密码
sql> alter role hr_clerk identified externally; //修改一个角色为外部角色***
sql> alter role hr_manager not identified; //修改角色的验证方式为不使用任何验证
4.assigning roles 分配角色给用户
sql> grant sales_clerk to scott;
sql> grant hr_clerk to hr_manager;
sql> grant hr_manager to scott with admin option;
5.establish default role 设置默认角色
ALTER USER user DEFAULT ROLE
{role[,role]...|ALL|EXCEPT role[,role]...|NONE}
设置默认角色时,需要确保用户已经具有了该角色。ALL表示将用户所有角色都
设置为默认角色,EXCEPT是排除列表,NONE表示没有默认角色。
sql> alter user scott default role hr_clerk,sales_clerk;
sql> alter user scott default role all;
sql> alter user scott default role all except hr_clerk;
sql> alter user scott default role none;
6.enable and disable roles 激活和禁止角色
当用户登录时,只具有其默认角色所拥有的权限。
sql> set role hr_clerk; //激活hr_clerk角色
sql> set role sales_clerk identified by commission; //以数据库验证方式激活角色
sql> set role all except sales_clerk; //激活除了sales_clerk之外的角色
sql> set role none; //禁止所有角色
7.revoke role from user 取消用户的角色
sql> revoke sales_clerk from scott;
sql> revoke hr_manager from public;
8.remove role
sql> drop role hr_manager;
9.display role information
view: =>dba_roles,dba_role_privs,
role_role_privs,dba_sys_privs,
role_sys_privs,
role_tab_privs,session_roles
homework:
(1)练习在linux中创建密码文件
(2)理解sys和system用户的区别
(3)理解sysoper和sysdba的区别
(4)学会使用系统权限,对象权限,角色来管理数据库中的应用.
展开阅读全文