数据库授权相关

来源:互联网 发布:httppost json参数 编辑:程序博客网 时间:2024/06/08 06:57

1、给数据库用户授权(对象为用户表)

GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}
  
privilege:
    select:查询
    insert:插入
    update:更新
    delete:删除
    rule
    all:所有
  
grant select,insert,updateon tablename topublic;
给所有用户授予查询、插入、更新tablename表的权限
revoke select,insert,updateon tablename frompublic;//收回所有用户查询、插入、更新tablename表的权限
  
object:
    table:表
    view:视图
    sequence:序列
    index:索引
  
grant select,insert,updateon tablename,viewname,sequencename,indexnameto 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 usernamewith admin option;
grant unlimited tablespace to username with adminoption;
不给新建用户授予resource权限,新建用户无法创建表
revoke resource from username;//对用户回收resource权限
  
3、查看指定用户有哪些系统权限
select * from dba_role_privswhere grantee=upper('username');
  
4、查看指定用户有哪些对象权限
select * from dba_tab_privswhere grantee=upper('username');
  
  
可能遇到问题:
1、当在一个新建数据库用户上创建表失败时,可以查看系统权限
    在当前用户执行select* from dba_role_privs where grantee=upper('username');如果不能执行(提示表或视图不存在),说明没有dba权限
    解决方法:可以登录sys账户赋予dba权限
    登录sys:sqlplus /as sysdba
    给username赋权限:grantdba 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是通过在授权时添加withadmin option 选项定义
grant dba to luyongpengwith admin option;//admin_option为YES,如果不加withadmin option 选项,则admin_option为NO
使用grantdba to luyongpeng;无法覆盖之前的权限
grantdba to luyongpeng with adminoption 可以覆盖grantdba to luyongpeng;的权限
 
 
转载地址

 

0 0
原创粉丝点击