博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle初学者之grant授权(不错)
阅读量:2815 次
发布时间:2019-05-13

本文共 2693 字,大约阅读时间需要 8 分钟。

Oracle初学者之grant授权

1、给数据库用户授权(对象为用户表)GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}privilege:	select:查询	insert:插入	update:更新	delete:删除	rule:	all:所有grant select,insert,update on tablename to public;给所有用户授予查询、插入、更新tablename表的权限revoke select,insert,update on tablename from public;//收回所有用户查询、插入、更新tablename表的权限object:	table:表	view:视图	sequence:序列	index:索引grant select,insert,update on tablename,viewname,sequencename,indexname to public;public:对所有用户开放权限GROUP groupname:对该组所有用户开放权限username:对指定用户开放权限2、给数据库用户授权(对象多为系统表,如dba可以查看的表)grant dba to username;不给用户授予dba权限,用户将无法查看系统表,例如v$datafile,dba_data_files等revoke dba from username;//对用户username回收dba权限注:如果使用pl/sql登录,授予dba权限后,需要重新登陆(初始理解,错误)后经验证,不需要重新登陆,只需要重新打开一个会话就可以理解:数据库的所有权限操作,都是以会话为单位,如果当前会话执行时没有dba权限,即便是已经重新赋予了权限,在当前会话中也是不起作用的而如果当前会话有dba权限,而后台取消了权限,那么当前会话的dba权限也不会消失grant connect to username;不给新建用户授予connect权限,新建用户无法通过SID或SERVICE_NAME连接数据库实例,即无法登录数据库revoke connect to username;//对用户username回收connect权限grant resource to username with admin option;grant unlimited tablespace to username with admin option;不给新建用户授予resource权限,新建用户无法创建表revoke resource from username;//对用户回收resource权限3、查看指定用户有哪些系统权限select * from dba_role_privs where grantee=upper('username');4、查看指定用户有哪些对象权限select * from dba_tab_privs where grantee=upper('username');可能遇到问题:1、当在一个新建数据库用户上创建表失败时,可以查看系统权限	在当前用户执行select * from dba_role_privs where grantee=upper('username');如果不能执行(提示表或视图不存在),说明没有dba权限	解决方法:可以登录sys账户赋予dba权限	登录sys:sqlplus / as sysdba	给username赋权限:grant dba to username;	也可以直接登录sys账户,select * from dba_role_privs where grantee=upper('username'),如果granted_role的值没有dba,说明没有dba权限权限相关的查询和赋予:所有权限的赋予均是在有赋予权限的用户下进行,此处授权用户都是sys用户1、select * from dba_role_privs where grantee=upper('luyongpeng');其中,admin_option是通过在授权时添加with admin option 选项定义grant dba to luyongpeng with admin option;//admin_option为YES,如果不加with admin option 选项,则admin_option为NO使用grant dba to luyongpeng;无法覆盖之前的权限但grant dba to luyongpeng with admin option 可以覆盖grant dba to luyongpeng;的权限
2、select * from dba_sys_privs where grantee=upper('luyongpeng');	该权限可以通过执行grant dba to luyongpeng;时自动加上,但admin_option默认为NO	可以通过grant unlimited tablespace to luyongpeng with admin option;将admin_option修改为YES	当执行revoke dba from luyongpeng;时,系统会同时回收dba权限和unlimite tablespace权限	如果想保留dba权限,但回收unlimited tablespace权限,可以通过revoke unlimited tablespace from luyongpeng;实现


 
3、select * from dba_tab_privs where grantee=upper('luyongpeng');	该权限表现了当前用户对owner的哪些表具有何种操作权限,并且grantable字段值YES表明了luyongpeng用户可以继续对其他用户开放signtest表的权限


 
执行grant insert on signtest to luyongpeng with grant option;	grant delete on signtest to luyongpeng with grant option;后,重新查询dba_tab_privs表信息如下,可以看到当加上with grant option选项后,GRANTABLE字段值为YES


 

你可能感兴趣的文章
python中ctypes的使用
查看>>
caffe编译时出现opencv类似于cv::xx没有定义或者无法连接问题的解决方法总结
查看>>
深度学习中的动量
查看>>
caffe安装教程Ubuntu 16.04(CPU)(libopencv-dev错误)
查看>>
yolov3模型微调相关
查看>>
#ifdef __cplusplus分析
查看>>
memcpy函数
查看>>
边框回归:BoundingBox-Regression(BBR)
查看>>
蒙哥马利算法
查看>>
备战秋招[一]-加法器与分频器
查看>>
备战秋招[二]-亚稳态与同步器
查看>>
备战秋招[三]-跨时钟域处理
查看>>
备战秋招[四]-复位
查看>>
备战秋招-面经篇
查看>>
举例说明构造代码块、静态、非静态代码块的执行顺序
查看>>
举例说明java面向对象思想的体现:抽象类、接口
查看>>
几个例子说明JAVA中的equals和==区别
查看>>
使用工厂方法模式创建实例(JAVA版)
查看>>
腾讯云服务器初始化
查看>>
【数据库迁移】阿里云向腾讯云迁移数据库
查看>>