Каков процесс создания таблиц в PostgreSQL для конкретной схемы и владельца таблицы

#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.]ВЛАДЕЛЬЦА имени таблицы НА другое имя пользователя;