Oracle 11g 中如何授权一张表某个字段的select权限给另外一个用户

grant select on emp to user1;
这样将scott自己的emp表的查询权限授权给user1这个用户是可以的,但如果这样授权就有问题:
grant select on emp(empno) to user1; // 将查询权限限定在emp表的empno这个字段上,就是只能让用户user1查询emp表中的empno这个字段,别的不能查询。。。
上边这样做出现:ORA-00905: 缺失关键字 的错误。。。
除了使用试图外,有没有直接限定的方式???

1、在PLSQL里,用sys(oracle系统用户)登陆,登陆的时候要选择SYSDBA。

2、在左边的菜单里找到Users节点,右击选择添加功能。在打开的界面里写上用户名、密码,临时表空间一般选择temp。

3、对象权限无需添加,角色权限选择connect和resource即可。

4、系统权限选择create any procedure、create any view、debug connect session、unlimited tablespace。

5、最后点击应用保存即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-04

无法授权单个字段给某用户,可以使用创建这个表的单个字段的视图,将视图授权给用户。

如,emp表如下:

现要将empno字段赋权给system用户,首先要创建一个视图。

create view v_emp as select empno from emp;

然后将视图授权给system用户,语句如下:

grant select on v_emp to system;

第2个回答  2011-10-04
grant select on admin.tb_name to user ;
这句话的意思:你的user用户是创建好的,登录进去把 admin用户的tb_name表的查询权限授给user用户。跟新、删除权限用逗号分开即可。
例:grant select,update,insert ,dellete on scott.emp to user;追问

晕死,看清楚我问的问题好不好。。。。

追答

呵呵,哈哈,嘿嘿 这样子滴啊,楼上不是说了么建个视图把要查询的字段放里面,把视图权限给那个用户就ok咯

追问

这种方法是可行,有没有更好的方法,直接限定到一张表的某个字段,而不借助别的方法、、

追答

等待高手中。。。

本回答被网友采纳
第3个回答  2011-10-05
在数据库首页的设置中进行权限设置
或者语句设置
如GRANT INSERT(ID) ON tmp TO mnt;
GRANT UPDATE(ID) ON tmp TO mnt;追问

grant select on emp to user1;
这样将scott自己的emp表的查询权限授权给user1这个用户是可以的,但如果这样授权就有问题:
grant select on emp(empno) to user1; // 将查询权限限定在emp表的empno这个字段上,就是只能让用户user1查询emp表中的empno这个字段,别的不能查询。。。
上边这样做出现:ORA-00905: 缺失关键字 的错误。。。
除了使用试图外,有没有直接限定的方式???

追答

在命令模式下
sqlplus sys/oracle as sysdba;

SQL>grant select any dictionary to hr(或者其他普通用户);

第4个回答  2011-10-05
可以考虑如下方案:
create user admin identified by password;
grant connect, resource, dba to admin追问

老大,看清楚我问的问题。。。

相似回答