oracle如何给新用户提供所有users表的读权限?
答案 0 :(得分:2)
一个一个,没有神奇的命令可以“立即”完成。
每个用户都应该运行
grant select on my_first_table to a_new_user;
声明。
没错,您可以编写代码为您编写代码,例如
SQL> select 'grant select on ' || tname || ' to a_new_user;' as command
2 from tab
3 order by tname;
COMMAND
-------------------------------------------------------------
grant select on BONUS to a_new_user;
grant select on CHALLEN_HEADER to a_new_user;
grant select on CONFIG to a_new_user;
grant select on CUSTOMER to a_new_user;
<snip>
现在将那一堆 GRANT
语句复制/粘贴到您的客户端(SQL*Plus、SQL Developer 等)中并运行它们。
或者,您可以将该语句的结果假脱机到一个文件中,然后运行该文件。
或者,甚至创建一个 PL/SQL(匿名?存储?)过程,它会接受一个参数 - 一个新用户的名字 - 并一次性授予权限。
答案 1 :(得分:1)
一般来说,您应该为每个“类别”的用户分配一个角色,然后授予该角色的权限。然后当新用户进入时,只需将角色授予用户:
CREATE ROLE BUSINESS_USER;
GRANT SELECT ON APP_SCHEMA.EMPLOYEE_TABLE TO BUSINESS_USER;
GRANT SELECT ON APP_SCHEMA.DEPARTMENT_TABLE TO BUSINESS_USER;
然后,随着您获得新用户:
GRANT BUSINESS_USER TO BOB;
GRANT BUSINESS_USER TO CAROL;
GRANT BUSINESS_USER TO TED;
GRANT BUSINESS_USER TO ALICE;