Почему я могу создать синоним, но не могу предоставить разрешение на выбор той же таблицы?

Я пытаюсь предоставить доступ к таблице от схемы 1 до схемы 2 (oracle10g).

Я создал синоним на схеме2:

CREATE SYNONYM schema2.table FOR schema1.table;

Синоним успешно создан.

Затем я попытался предоставить выбор в той же таблице:

grant select on schema1.table to schema2;

Я получил:

ORA-00942: table or view does not exist 

Это не имеет смысла для меня. Я смог создать синоним, но не грант. Что я делаю неправильно?

Я не могу получить таблицу из схемы 2:

select * from table;
ORA-00942: table or view does not exist

person Rodrick    schedule 13.09.2016    source источник
comment
Имейте в виду, что гранты даются, а не берутся. Schema2 не может предоставлять себе права на объекты Schema1 (если это не учетная запись DBA). Грант должен исходить от Schema1, позволяя Schema2 получать доступ к своим объектам.   -  person Michael Broughton    schedule 13.09.2016


Ответы (2)


Если у меня есть права «СОЗДАТЬ ЛЮБОЙ СИНОНИМ |», я могу создать синоним для таблицы в схеме 1 в схеме 2 без необходимости предоставления прав на базовые объекты. Если у меня нет прав на таблицу схемы 1 (GRANT WITH GRANT OPTION) для повторно предоставить его другому пользователю, то я не могу также сделать предоставление от этого пользователя.

Решение: войдите в систему как схема1 и сделайте грант там, и тогда синоним будет работать в схеме 2, или убедитесь, что пользователь, под которым я вошел в систему, имеет права на предоставление гранта объекту схемы 1.

По вашему комментарию:

Войдите в систему как схема1 и предоставьте любые операции, которые вы хотите, чтобы схема2 выполняла в вашей таблице.

e.g)

SQL> GRANT SELECT, INSERT, UPDATE, DELETE для TABLE to SCHEMA2;

После этого SCHEMA2 сможет видеть таблицу через ее синоним и получит разрешение на эти операции с ней.

Если SCHEMA2 собирается использовать эту таблицу в представлении, которое затем будет предоставлять выборочный доступ к другим схемам для использования, вам нужно добавить «WITH GRANT OPTION» к первоначальному предоставлению из схемы 1, иначе схема 2 не сможет повторно предоставить права другим пользователям.

person Michael Broughton    schedule 13.09.2016
comment
Какой грант я должен сделать на схеме 1? Какие конкретно права я должен проверить на схеме2? - person Rodrick; 13.09.2016

Вы можете создавать синонимы для объектов, которых на самом деле не существует, например.

create synonym flub for blib;

... поэтому тот факт, что вы смогли создать синоним, не означает, что объекты существуют.

person Tony Andrews    schedule 13.09.2016