欢迎来访,本站中的文章均为日常工作的记录和总结,写出的每个服务配置都是自己手动配置测试过,有不足之处欢迎指出,谢谢!

Oracle 授权用户B查询用户A指定表及全部表

DBserver Mr.c 1066℃ 0评论

  数据库肯定避免不了需要给不同的用户进行授权,oracle中用户都是对应表空间的,下面就记录下相关操作:
  DBA权限登录数据库,新建用户xyz 并授权基本权限:

SQL> create user xyz  identified by xyz123456
SQL> grant connect,resource to xyz;

  切换到表空间的所属用户,也就是需要给用户xyz查询的这张表对应属于的用户:

[oracle@DBoracle ~]$ sqlplus cnyunwei/cnyunwei2017

1. 授权单表:
  授权用户cnyunwei 对应的表空间下表user_info 给用户xyz 查询权限:

SQL> grant select on user_info  to xyz ;

2.sysdba方式授权所有表:
  授权所有表相对较麻烦,如果用DBA用户身份可以直接授权所有表

SQL> grant select any table on xyz;

  但是这样的方式授权下来xyz用户就具有查询当前服务器中所有用户表空间的权限了,所以这是非常不安全的做法。
  oracle没有像MySQL一样可以授权一个库这样的说法,授权用户所有表,也只有将上述授权单表的命令全部执行一次,但是可以先把表查询出来,然后复制数据进行导入执行,速度还是非常快的:
3. 单表授权方式授权所有表:
  通过cnyunwei用户登录数据库,并查询cnyunwei用户下所有表

 select 'GRANT SELECT ON ' || table_name || ' to xyz;'  from user_tables;
#该命令最好用PL/SQL工具执行,如果用sqlplus在服务器上执行,表太多后就不太好复制,将查询出来的表复制到.sql文件中

#通过PL/SQL工具直接导入完成授权。
#上传服务器执行(需要放到oracle有权限的目录下)方法:

[oracle@DBoracle ~]$ sqlplus cnyunwei/cnyunwei2017
SQL > @/data/oracledata/devops.sql

转载请注明:菜鸟运维 » Oracle 授权用户B查询用户A指定表及全部表

喜欢 (1)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址