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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、最后点击应用保存即可。

参考技术A

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

如,emp表如下:

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

create view v_emp as select empno from emp;

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

grant select on v_emp to system;

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

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

追答

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

追问

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

追答

等待高手中。。。

参考技术C 在数据库首页的设置中进行权限设置
或者语句设置
如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(或者其他普通用户);

参考技术D 可以考虑如下方案:
create user admin identified by password;
grant connect, resource, dba to admin追问

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

sql如何查询出一张表的的某个字段数据更换成另一张表的字段数据

新手求指导! 用游标查出sal数据再根据job数据内容对应更换或赋值另一张sal表数据。

参考技术A UPDATE 表1
SET sal=表2.sal
FROM 表2
WHERE 表1.job=表2.job追问

mysql 怎么写

本回答被提问者和网友采纳

以上是关于Oracle 11g 中如何授权一张表某个字段的select权限给另外一个用户的主要内容,如果未能解决你的问题,请参考以下文章

在oracle中如何查询一张表的所有数据结构,包括字段,视图,索引,约束

sql如何查询出一张表的的某个字段数据更换成另一张表的字段数据

SQL如何查询一张表的所有字段并按其中一个字段进行分组

THINKPHP怎么查询一张表中某个字段数据重复次数最多的前几名!

oracle 11g 分区表创建(自动按年分区)

在oracle数据库如何查询某个字段在哪些表中出现过