SQL中的用户权限操作

转自:https://www.2cto.com/database/201408/322396.html
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');

grant select on Table_name to User_name
revoke select on Table_name from User_name

猜你喜欢

转载自blog.csdn.net/qq_32670879/article/details/79915722