Как получить доступ к таблицам созданного мною нового пользователя?

Под пользователем system создал нового пользователя Admin и дал ему привилегии на ресурсы, dba и подключение к БД. После, от имени этого пользователя создал таблицу, для примера пусть это будет таблица T. От пользователя system я пытался получить доступ к таблице T, но её для пространства system не существует, зато у Admin доступ имеется.

Как получить доступ к таблицам: изменению, редактированию и т.д., для созданного мною пользователя? Можно-ли установить этот доступ автоматически, чтобы для каждого созданного пользователя, пользователь, создавший его, мог получить доступ к его таблицам?


Ответы (1 шт):

Автор решения: 0xdb

пытался получить доступ к таблице "T", но её для пространства system не существует

Совершенно верно, этой таблицы в пространстве имён system (или правильней сакзать, в схеме) не существует. Без указания полного имени объекта БД, в данном случае - Admin.T, поиск будет только в текущей схеме. Подробней, о том, как осуществляется поиск имён в документации.

Как видите, привилигированные пользователи имеют полный контроль над объектами других пользователей:

create user u1 identified by u1
/
User U1 created.

create table u1.t (col1 int)
/
Table U1.T created.

select * from u1.t
/
no rows selected

alter table u1.t add col2 char(1) 
/
Table U1.T altered.

Для удобства можно создать синонимы, тогда можно обращяться без указания схемы. Но заметьте, синонимы действуют для DML, но не для DDL:

create public synonym t for u1.t
/
Synonym T created.

select * from t 
/
no rows selected

drop table t purge
/
ORA-00942: table or view does not exist

Не забудте прибраться:

drop user u1 cascade
/
User U1 dropped.
→ Ссылка