Как получить доступ к таблицам созданного мною нового пользователя?
Под пользователем system создал нового пользователя Admin и дал ему привилегии на ресурсы, dba и подключение к БД. После, от имени этого пользователя создал таблицу, для примера пусть это будет таблица T. От пользователя system я пытался получить доступ к таблице T, но её для пространства system не существует, зато у Admin доступ имеется.
Как получить доступ к таблицам: изменению, редактированию и т.д., для созданного мною пользователя? Можно-ли установить этот доступ автоматически, чтобы для каждого созданного пользователя, пользователь, создавший его, мог получить доступ к его таблицам?
Ответы (1 шт):
пытался получить доступ к таблице "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.