自学内容网 自学内容网

【PostgreSQL】- 1.4 PostgreSQL 业务规划(创建 Schema)

业务规划与创建 Schemas

如果实际场景,有业务A、业务B、业务C,推荐的方式是在同一个数据库中为每个业务创建不同的 schema。然后,你可以为每个业务创建不同的账户,并赋予这些账户对应业务的 schema 权限。这种方式的好处是:

隔离性:不同业务的对象被隔离在不同的 schema 中,避免了命名冲突和误操作。
权限管理:可以精细地控制每个账户对各个 schema 的访问权限,实现业务间的数据隔离和安全性。
易于管理:所有业务都集中在同一个数据库中,方便进行备份、恢复和维护。

具体步骤操作:

在 mydatabase 数据库中创建三个 schema,分别命名为 schema_a、schema_b 和 schema_c,对应业务A、业务B和业务C。
创建三个账户,分别命名为 user_a、user_b 和 user_c,用于访问对应业务的 schema。
使用 GRANT 语句为每个账户赋予对应 schema 的访问权限。例如,授予 user_a 对 schema_a 的所有权限,但限制其对其他 schema 的访问。

这样,就为每个业务创建了一个独立的命名空间,并通过账户权限实现了业务间的隔离和安全性。

在 PostgreSQL 中创建 schema 和对应的账户:

创建新用户:

登录到 PostgreSQL:

使用 psql 命令行工具以超级用户(如 postgres)身份登录到你的数据库集群。

psql -U postgres

为每个业务创建一个新用户。例如,为 oa 业务创建用户 oa_user

     CREATE USER oa_user WITH PASSWORD 'my_password_here';

重复此步骤为其他业务(如 iot, erp, mis)创建用户。

创建 Schema:

为每个业务创建一个新的 schema。

    ~$ psql
    psql (15.6 (Debian 15.6-0+deb12u1))
    Type "help" for help.
    
    postgres=# \c mydatabase
    You are now connected to database "mydatabase" as user "postgres".
    mydatabase=#   
    mydatabase=# CREATE SCHEMA mydb_oa01 AUTHORIZATION oa_user;

这创建了名为 oa 的新 schema,并将其所有权赋予 oa_user。同样地,为其他业务创建 schema。

授予数据库账户权限:

根据需要授予用户对其 schema 的适当权限。例如,要允许 oa_user 在其 oa schema 中创建表:

GRANT CREATE ON SCHEMA oa TO oa_user;

授予其他权限,如 USAGE(允许用户使用 schema 中的对象)或 ALTER(允许用户修改 schema 中的对象),可根据业务需求规划。

授权示例:

配置 dbadmin 可以访问新建的 schema

mydatabase=# GRANT USAGE ON SCHEMA mydb_thb01 TO user_oa;
GRANT
mydatabase=# GRANT USAGE ON SCHEMA mydb_thb01 TO dbadmin;
GRANT

mydatabase=# GRANT USAGE ON SCHEMA mydb_oa01 TO user_thb;
GRANT
mydatabase=# GRANT USAGE ON SCHEMA mydb_oa01 TO dbadmin;
GRANT
mydatabase=# \dn+
                                          List of schemas
    Name      |       Owner       |           Access privileges            |      Description
--------------+-------------------+----------------------------------------+------------------------
 public       | pg_database_owner | pg_database_owner=UC/pg_database_owner+| standard public schema
              |                   | =U/pg_database_owner                   |
 mydb_oa01    | user_oa           | user_oa=UC/user_oa                    +|
              |                   | user_thb=U/user_oa                    +|
              |                   | dbadmin=U/user_oa                      |
 mydb_thb01   | user_thb          | user_thb=UC/user_thb                  +|
              |                   | user_oa=U/user_thb                    +|
              |                   | dbadmin=U/user_thb                     |
(3 rows)

mydatabase=#

配置外部访问权限

编辑pg_hba.conf文件以控制访问权限, 这里参考 1.3 PostgreSQL 创建数据库(初始化) 中的 配置外部访问权限 即可。


原文地址:https://blog.csdn.net/dnncool/article/details/137195591

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!