Oracle创建查询账户,并授予查询其他用户表权限

发布时间 2023-11-22 16:41:21作者: 小华同学

要在Oracle数据库中创建新的查询用户,以便可以访问表和视图等信息

一、登录DBA权限的账号

1、可以使用命令窗口登录,进行数据库管理

conn sys/sys123 as sysdba;

2、也可以使用plsql登录

以上两种方式自选其一登录。

二、新建表空间、用户

此部分操作由于在另一篇随笔中有详细记录,这里不再赘述,需要的可自行查找。

三、赋权限

1、为查询用户赋连接权限

grant connect to query;

2、为查询用户赋创建同义词权限

grant create synonym to query;

3、为查询用户赋赋予只读权限

grant select_catalog_role,create session to query;

四、 赋予查询权限

1、将base用户下的user表查询权限赋予给query用户

grant select on base.user to query;

2 、所有表的查询权限

生成赋权脚本(将base用户下的所有表查询权限赋予给query用户)

select 'grant select on base.' || table_name || ' to test_cx;' from user_tables;

执行上述sql语句,生成赋权语句,将生成的语句全部执行完后,既赋权完毕

 五、为query用户创建同义词

若不创建同义词,那么query用户查询表时,必须使用base.user这类的写法。 由于前面已经为query用户赋予创建同义词权限,因此可以登录query用户直接创建。

1、 为指定表"user"创建同义词

create or replace synonym query.user for base.user;

2、 为所有表创建同义词

下面的sql语句是用来批量生成创建同义词执行语句的,生成的语句全部执行后,即可完成对所有表创建同义词。需要管理员权限。

select 'create or replace synonym base.'||object_name||' for '||owner||'.'||object_name||';' from dba_objects where owner in ('base') and object_type='TABLE';