Postgres 服务器访问仅限于数据库列表中的一个数据库

5 postgresql

我试图在服务器端限制连接到 LAN 的用户只能查看和访问我系统中的数据库列表中的 1 个数据库。

我怎样才能做到这一点?

我试过了

host    db_name     all       (connecting_ip)/32          krb5

host    db_name     all       (connecting_ip)/32          ident

host    db_name     all       (connecting_ip)/32          crypt

host    db_name     all       (connecting_ip)/32          trust
Run Code Online (Sandbox Code Playgroud)

这些参数在pg_hba.conf文件中已经改过了,改了之后还是不行。

请帮助提供有关如何解决此问题的解决方案,以便任何访问具有数据库列表的服务器中的数据库的用户只能查看和访问所需的数据库。

Mik*_*ll' 5

如果对 pg_hba.conf 进行更改,则需要重新加载 PostgreSQL。

但我认为您最好撤销该用户的 CONNECT权限。(或者可能撤销所有权限。)骨架语法是

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]
Run Code Online (Sandbox Code Playgroud)

就像是

REVOKE CONNECT ON DATABASE database-name FROM fishy_user;
Run Code Online (Sandbox Code Playgroud)

在 PostgreSQL 中,如果您想这样做,可以授予每个角色(用户或组)访问不同数据库的权限。查看数据库角色