#postgresql #ubuntu-20.04
Вопрос:
Я новичок в Postgres, так как имею опыт работы с Оракулом.
Я использую pgAdmin4, где я создал базу данных под названием my_db, а также схему под названием admin_schema.
Каковы шаги для обеспечения того, чтобы все новые таблицы, созданные в базе данных my_db, принадлежали схеме admin_schema и владельцу таблицы admin_owner, которые я не уверен, как создать?
Я в принципе не хочу, чтобы создаваемые мной таблицы принадлежали к общедоступным именам schemaname и владельцам таблиц POSTGRES.
Обновленный
Чтобы ответить на вопросы ниже:
- Я использую pgAdmin4 в Ubuntu 20.04, и я предполагаю, что я вхожу в систему как пользователь postgres
- У меня есть только один сервер, где имя пользователя-postgres
- В настоящее время у меня нет пользователя или роли с именем admin_owner, так как я не уверен, как это создать?
- Не знаете, как запустить pgAdmin, чтобы он использовал пользователя: admin_owner?
- Я в основном хочу, чтобы все мои таблицы принадлежали admin_owner по схеме admin_schema в базе данных my_db
Комментарии:
1. Вы входите в
postgres
систему для создания этих таблиц?2. Что именно вы подразумеваете под «обеспечением»? Вы просто хотите, чтобы это стало значением по умолчанию для таблиц, созданных с
CREATE TABLE
помощью (для каких пользователей)? Или вообще отказать произвольным пользователям в разрешении на создание любых других таблиц?3. Вы, конечно, можете отказаться от
public
схемы, если хотите предотвратить ее использование 🙂4. вы уже создали роль
admin_owner
с паролем? разрешено ли этой роли создавать схемы и таблицы?5. Обновил свой основной пост, чтобы ответить на ваши вопросы выше.
Ответ №1:
В настоящее время у меня нет пользователя или роли с именем admin_owner, так как я не уверен, как это создать
Чтобы создать пользователя, войдите в систему как суперпользователь ( postgres
), затем запустите:
create user admin_owner with password '******';
Я в основном хочу, чтобы все мои таблицы принадлежали admin_owner по схеме admin_schema в базе данных my_db
После создания пользователя создайте схему:
create schema admin_schema
authorization admin_user; --<< this makes admin_user the owner of the schema.
Если вы не хотите добавлять в каждую ссылку на таблицу имя схемы, измените путь поиска для пользователя-администратора:
alter user admin_user
set search_path = admin_schema;
Не знаете, как запустить pgAdmin, чтобы он использовал пользователя: admin_owner
Создайте новое соединение в pgAdmin (ошибочно называемом «Сервер»), укажите admin_user
в качестве имени пользователя и введите пароль, указанный при создании пользователя.
В зависимости от того, как вы настроили свой сервер Postgres, вам может потребоваться настроить pg_hba.conf, чтобы разрешить удаленные подключения с паролем.
Ответ №2:
Как пользователь Oracle, вы, естественно, путаетесь в схемах. Схемы отличаются от пользовательских. Единственное соединение заключается в том, что у схем (как и у всех других объектов базы данных) есть владелец. В частности, таблицы не могут принадлежать схеме, они могут быть (логически) расположены в схеме.
Чтобы таблица принадлежала определенному пользователю, войдите в базу данных как этот пользователь и создайте таблицу. Объект принадлежит пользователю, который его создал.
Чтобы поместить таблицы в определенную схему, укажите имя таблицы в соответствии со схемой:
CREATE TABLE admin_schema.table (...);
Комментарии:
1. В качестве альтернативы, если вы создали таблицу при входе в систему как другой владелец, вы можете изменить владельца таблицы с помощью: ИЗМЕНИТЕ ИМЯ ТАБЛИЦЫ [schema_name.]ВЛАДЕЛЬЦА имени таблицы НА другое имя пользователя;