oracle笔记控制用户权限及练习

/*

控制用户权限及练习

*/

--
--创建一个用户
CREATE USER czh
IDENTIFIED BY czh
--授予权限(授予czh这个用户登录的权限)
GRANT CREATE SESSION 
TO czh
--授予权限
GRANT CREATE TABLE 
TO czh

--创建用户表空间(用户拥有create table权限之外,还需要分配相应的表空间才可开辟存储空间用于创建的表)
--
ALTER USER czh QUOTA 5m
ON USERS
--
ALTER USER czh QUOTA UNLIMITED  
ON USERS

--修改czh用户的密码(不是只有dba才可以修改czh这个用户的密码,czh这个用户自己本身也可以修改自己的密码)
ALTER USER czh
IDENTIFIED BY 123
--

--创建角色
CREATE ROLE my_manager
--把权限赋给角色
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW
TO my_manager
--创建一个新用户
CREATE USER czh02
IDENTIFIED BY czh02
--把角色授予用户
GRANT my_manager 
TO czh02
--

--授予对象权限给czh, czh02这2个用户
GRANT SELECT
ON scott.employees
TO czh, czh02
--授予对象权限给czh, czh02这2个用户
GRANT SELECT, UPDATE, INSERT
ON scott.employees
TO czh, czh02

/*

--授予多个对象权限给czh, czh02这2个用户

--以下这种写法会报错,on后面不能写多个对象(on后面写了多张表对象,这种写法是不支持)
GRANT SELECT, UPDATE
ON scott.employees, scott.departments
TO czh, czh02

*/

--WITH GRANT OPTION表示:使用户同样具有分配权限的权利
SELECT * FROM 
scott.locations
--
GRANT SELECT, UPDATE
ON scott.locations
TO czh
WITH GRANT OPTION

--
GRANT SELECT, UPDATE
ON scott.jobs
TO czh
WITH GRANT OPTION

--PUBLIC关键字表示:向数据库中所有用户分配权限
GRANT SELECT, UPDATE
ON scott.job_grades
TO PUBLIC 

--收回对象对象
REVOKE SELECT, UPDATE 
ON scott.LOCATIONS
FROM czh02

--用户拥有的关于表对象权限
select * from USER_TAB_PRIVS_RECD

/*

数据字典视图	                     描述
ROLE_SYS_PRIVS	             角色拥有的系统权限
ROLE_TAB_PRIVS	             角色拥有的对象权限
USER_ROLE_PRIVS	             用户拥有的角色
USER_TAB_PRIVS_MADE	         用户分配的关于表对象权限
USER_TAB_PRIVS_RECD	         用户拥有的关于表对象权限
USER_COL_PRIVS_MADE	         用户分配的关于列的对象权限
USER_COL_PRIVS_RECD	         用户拥有的关于列的对象权限
USER_SYS_PRIVS	             用户拥有的系统权限

*/

--
SELECT * 
FROM USER_SYS_PRIVS

--
SELECT * 
FROM USER_TAB_PRIVS_MADE	

--收回权限
REVOKE SELECT, UPDATE, INSERT
ON scott.EMPLOYEES
FROM czh02

/*

总结:使用 DCL 控制数据库权限

语句                             功能
CREATE USER               创建用户(通常由DBA完成)
GRANT                     分配权限
CREATE ROLE               创建角色(通常由DBA完成)
ALTER USER                修改用户密码
REVOKE                    收回权限

*/

/*

练习题

*/

--如果用户能够登陆到数据库,至少需要哪种权限?是系统权限还是对象权限
--CREATE SESSION 系统权限

--创建表需要哪种权限?
--CREATE TABLE 或者 CREATE ANY TABLE都可以 (CREATE TABLE也是系统权限)

--将表departments的查询权限分配给用户system
GRANT SELECT
ON departments
TO SYSTEM


--从system处收回刚才赋予的权限
REVOKE SELECT
ON departments
FROM SYSTEM


/*
创建角色dvp,并将如下权限赋予该角色
CREATE PROCEDURE
CREATE SESSION
CREATE TABLE
CREATE SEQUENCE
CREATE VIEW
*/

--创建角色
CREATE ROLE dvp

--将权限赋予dvp角色
GRANT CREATE PROCEDURE, CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW
TO dvp 

 

你可能感兴趣的:(oracle笔记控制用户权限及练习)