在 PostgreSQL 中为特定模式和 table 所有者创建 table 的过程是什么

What is the process to create tables in PostgreSQL for a specific schema and table owner

我是 Postgres 的新手,有 Oracle 背景。

我正在使用 pgAdmin4,我在其中创建了一个名为 my_db 的数据库以及一个名为 admin_schema[=34 的模式=].

确保在 my_db 数据库中创建的所有新 table 属于架构 [= 的步骤是什么? 46=] 和 table 所有者 admin_owner,我不确定如何创建?

我基本上不想要我创建的属于架构名称 PUBLIC 和 tableowner POSTGRES 的 tables。

已更新

回答以下问题:

  • 我在 Ubuntu 20.04 中使用 pgAdmin4,我假设我正在以用户 postgres
  • 登录
  • 我只有一台用户名为 postgres 的服务器
  • 我目前没有名为 admin_owner 的用户或角色,因为不确定如何创建它?
  • 不确定如何启动 pgAdmin 以便它使用用户:admin_owner?
  • 我基本上希望我所有的 table 在数据库 my_db
  • 中属于 admin_schema 架构下的 admin_owner

作为 Oracle 用户,您自然会对模式感到困惑。模式与用户不同。唯一的联系是模式(像所有其他数据库对象一样)有一个所有者。特别是,tables 不能属于模式,它们可以(逻辑上)位于模式中。

要让 table 属于某个用户,请以该用户身份登录数据库并创建 table。对象属于创建它的用户。

要将 table 放入某个架构中,请使用架构限定 table 名称:

CREATE TABLE admin_schema.table (...);

I currently do not have a user or role called admin_owner as unsure how to create this

对于 create 用户,以超级用户 (postgres) 身份登录,然后 运行:

create user admin_owner with password '******';

I basically want all my tables to be owned by admin_owner under the schema of admin_schema within the database my_db

创建用户后,创建the schema:

create schema admin_schema 
   authorization admin_user; --<< this makes admin_user the owner of the schema. 

如果您不想在每个 table 引用前添加架构名称,请为管理员用户更改 search path

alter user admin_user  
   set search_path = admin_schema;

Unsure how to start pgAdmin so that it uses the user: admin_owner

在 pgAdmin(容易混淆地称为“服务器”)中创建一个新连接,指定 admin_user 作为用户名并提供您在创建用户时指定的密码。


根据您配置 Postgres 服务器的方式,您可能需要调整 pg_hba.conf 以允许远程密码连接。