如何在 oracle sql 12.2.0.1.0 中授予引用?
how to grant references in oracle sql 12.2.0.1.0?
我正在尝试授予 user1 在其他模式中创建(和更改)table 的权限。到目前为止,我已经能够创建 "simple" tables。但是当使用外键创建 tables 时出现错误
我有 oracle 数据库 12c 和 2 users/schemas。 User1 授予在 user2 架构中创建 tables 的权限:
grant create any table to user1
(好吧,可能不是最好的解决方案,但现在不重要)
现在,当我尝试使用外键创建 table 时,我收到标准消息
Error: ORA-01031: insufficient privileges
[Failed SQL: create table…
我一直在努力
grant references to user1
来自这个
的解决方案
得到
ORA-01924: role 'REFERENCES' not granted or does not exist
(好的,这是真的,没有角色 'REFERENCES' 但我不需要新角色,或者我不明白它在这种情况下会有什么帮助)
还有
grant references on testTable to user1
有效,但我需要能够向任何 table 授予权限,即使对于那些将在未来创建的
Oracle 中没有系统权限"REFERENCE ANY TABLE"。
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/GRANT.html#GUID-20B4E2C0-A7F8-4BC8-A5E8-BE61BDC41AC3
你可以做的是授予 "create any table" 首先创建 table 然后 "alter any table" 将外键约束添加到另一个用户的 table.
请注意,在下面的示例中,用户 1 仍然需要对用户 2 的 table 的显式引用权限才能拥有它的外键。
FSITJA@db01 2019-06-25 11:43:14> create user user1 identified by 123 quota unlimited on users;
User created.
FSITJA@db01 2019-06-25 11:43:14> grant create session to user1;
Grant succeeded.
FSITJA@db01 2019-06-25 11:43:14> grant create any table, create any index, alter any table to user1;
Grant succeeded.
FSITJA@db01 2019-06-25 11:43:14> create user user2 identified by 123 quota unlimited on users;
User created.
FSITJA@db01 2019-06-25 11:43:14> conn user1/123@db01
Connected.
Session altered.
USER1@db01 2019-06-25 11:43:15> create table user2.t1(col1 number primary key);
Table created.
USER1@db01 2019-06-25 11:43:15> create table user2.t2(col1 number);
Table created.
USER1@db01 2019-06-25 11:43:15> alter table user2.t2 add constraint fk_t2_t1 foreign key (col1) references user2.t1(col1)
;
Table altered.
USER1@db01 2019-06-25 11:43:15> create table user1.t3(col1 number);
Table created.
USER1@db01 2019-06-25 11:43:15> alter table user1.t3 add constraint fk_t3_51 foreign key (col1) references user2.t1(col1)
;
alter table user1.t3 add constraint fk_t3_51 foreign key (col1) references user2.t1(col1)
*
ERROR at line 1:
ORA-01031: insufficient privileges
USER1@db01 2019-06-25 11:43:15> conn user2/123@db01
Connected.
Session altered.
USER2@db01 2019-06-25 11:43:16> grant references on user2.t1 to user1;
Grant succeeded.
USER2@db01 2019-06-25 11:43:16> conn user1/123@db01
Connected.
Session altered.
USER1@db01 2019-06-25 11:43:16> alter table user1.t3 add constraint fk_t3_51 foreign key (col1) references user2.t1(col1)
;
Table altered.
USER1@db01 2019-06-25 11:43:20>
我正在尝试授予 user1 在其他模式中创建(和更改)table 的权限。到目前为止,我已经能够创建 "simple" tables。但是当使用外键创建 tables 时出现错误
我有 oracle 数据库 12c 和 2 users/schemas。 User1 授予在 user2 架构中创建 tables 的权限:
grant create any table to user1
(好吧,可能不是最好的解决方案,但现在不重要)
现在,当我尝试使用外键创建 table 时,我收到标准消息
Error: ORA-01031: insufficient privileges
[Failed SQL: create table…
我一直在努力
grant references to user1
来自这个
得到
ORA-01924: role 'REFERENCES' not granted or does not exist
(好的,这是真的,没有角色 'REFERENCES' 但我不需要新角色,或者我不明白它在这种情况下会有什么帮助)
还有
grant references on testTable to user1
有效,但我需要能够向任何 table 授予权限,即使对于那些将在未来创建的
Oracle 中没有系统权限"REFERENCE ANY TABLE"。 https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/GRANT.html#GUID-20B4E2C0-A7F8-4BC8-A5E8-BE61BDC41AC3
你可以做的是授予 "create any table" 首先创建 table 然后 "alter any table" 将外键约束添加到另一个用户的 table.
请注意,在下面的示例中,用户 1 仍然需要对用户 2 的 table 的显式引用权限才能拥有它的外键。
FSITJA@db01 2019-06-25 11:43:14> create user user1 identified by 123 quota unlimited on users;
User created.
FSITJA@db01 2019-06-25 11:43:14> grant create session to user1;
Grant succeeded.
FSITJA@db01 2019-06-25 11:43:14> grant create any table, create any index, alter any table to user1;
Grant succeeded.
FSITJA@db01 2019-06-25 11:43:14> create user user2 identified by 123 quota unlimited on users;
User created.
FSITJA@db01 2019-06-25 11:43:14> conn user1/123@db01
Connected.
Session altered.
USER1@db01 2019-06-25 11:43:15> create table user2.t1(col1 number primary key);
Table created.
USER1@db01 2019-06-25 11:43:15> create table user2.t2(col1 number);
Table created.
USER1@db01 2019-06-25 11:43:15> alter table user2.t2 add constraint fk_t2_t1 foreign key (col1) references user2.t1(col1)
;
Table altered.
USER1@db01 2019-06-25 11:43:15> create table user1.t3(col1 number);
Table created.
USER1@db01 2019-06-25 11:43:15> alter table user1.t3 add constraint fk_t3_51 foreign key (col1) references user2.t1(col1)
;
alter table user1.t3 add constraint fk_t3_51 foreign key (col1) references user2.t1(col1)
*
ERROR at line 1:
ORA-01031: insufficient privileges
USER1@db01 2019-06-25 11:43:15> conn user2/123@db01
Connected.
Session altered.
USER2@db01 2019-06-25 11:43:16> grant references on user2.t1 to user1;
Grant succeeded.
USER2@db01 2019-06-25 11:43:16> conn user1/123@db01
Connected.
Session altered.
USER1@db01 2019-06-25 11:43:16> alter table user1.t3 add constraint fk_t3_51 foreign key (col1) references user2.t1(col1)
;
Table altered.
USER1@db01 2019-06-25 11:43:20>