当当前用户看不到表时,如何向新用户授予对列的访问权限?
How to give access to columns to new user when current user does not see the tables?
我使用 SYSTEM 用户创建了一个新用户。之后,我尝试仅在 1 table 中为该用户授予对特定列的访问权限,但出现此 table 不存在的错误。这意味着 SYSTEM 用户无权访问此 table。不幸的是,有权访问正常生产 tables 的用户无法管理用户权限和访问权限。我有哪些选择?
CREATE USER test1 IDENTIFIED BY 123456;
GRANT UPDATE (extinvno, invoiceno) ON invoice TO test1;
编辑:解决方案
创建了我需要的 3 个视图。授予新用户 SELECT 并更新其中 2 个视图,并在第 3 个视图上选择。对于新用户,我不得不使用 chema 来引用视图:chema.view
如果 SYSTEM
不拥有 table 那么您需要指定谁拥有;例如,如果 table 在 HR 模式中,您将执行:
GRANT UPDATE (extinvno, invoiceno) ON HR.invoice TO test1;
...当然要使用真正拥有的架构名称。
并不是说 SYSTEM
没有权限访问 table;这是默认情况下它正在寻找 SYSTEM.invoice
,它不存在。
table 所有者也可以将更新权限授予 test1
。
我使用 SYSTEM 用户创建了一个新用户。之后,我尝试仅在 1 table 中为该用户授予对特定列的访问权限,但出现此 table 不存在的错误。这意味着 SYSTEM 用户无权访问此 table。不幸的是,有权访问正常生产 tables 的用户无法管理用户权限和访问权限。我有哪些选择?
CREATE USER test1 IDENTIFIED BY 123456;
GRANT UPDATE (extinvno, invoiceno) ON invoice TO test1;
编辑:解决方案 创建了我需要的 3 个视图。授予新用户 SELECT 并更新其中 2 个视图,并在第 3 个视图上选择。对于新用户,我不得不使用 chema 来引用视图:chema.view
如果 SYSTEM
不拥有 table 那么您需要指定谁拥有;例如,如果 table 在 HR 模式中,您将执行:
GRANT UPDATE (extinvno, invoiceno) ON HR.invoice TO test1;
...当然要使用真正拥有的架构名称。
并不是说 SYSTEM
没有权限访问 table;这是默认情况下它正在寻找 SYSTEM.invoice
,它不存在。
table 所有者也可以将更新权限授予 test1
。