You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中为非当前连接数据库的Schema授予权限?

PostgreSQL跨数据库Schema权限授予问题解答

不行,你尝试的GRANT ALL ON SCHEMA <other>.public TO someuser;这种语法在PostgreSQL里是不支持的。

PostgreSQL中,每个数据库都是独立的命名空间,当你连接到某个数据库时,所有DDL、DCL命令(包括GRANT)只能作用于当前连接的数据库对象,无法直接跨数据库操作其他库的Schema、表等对象。

可行的替代方案(无需手动执行\c切换)

  • 使用dblink扩展远程执行授权
    先确保dblink扩展已安装(可通过CREATE EXTENSION IF NOT EXISTS dblink;安装),然后执行以下语句在目标库中完成授权:

    -- 一次性执行授权
    SELECT dblink_exec('dbname=other', 'GRANT ALL ON SCHEMA public TO someuser;');
    

    注意:执行该命令的用户需要具备other数据库的连接权限,以及在other库中对public Schema执行GRANT的权限。

  • 利用psql的\gexec自动切换执行
    如果是在psql客户端中,可以通过生成切换命令并自动执行的方式,避免手动输入\c:

    SELECT format('\c other; GRANT ALL ON SCHEMA public TO someuser; \c postgres;') \gexec
    

    这条命令会自动完成:切换到other库、执行授权、切回原postgres库的流程。

内容的提问来源于stack exchange,提问作者dokaspar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:22:04