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

Adonis与PostgreSQL迁移报错:public schema权限不足问题排查

PostgreSQL权限问题排查(Adonis+Docker场景)

问题1:权限拒绝原因及初始化SQL补充配置

权限拒绝的核心是PostgreSQL的权限分层逻辑:

  • 你仅给adonis用户授予了数据库级的全部权限,但表、序列等对象实际存储在schema(默认是public)下,public schema的默认操作权限仅属于超级用户postgres,adonis用户没有在该schema下创建表、序列的权限。
  • 初始化SQL确实缺少schema层面的权限配置,adonis用户默认不会拥有public schema的创建/操作权限,必须显式授予。

修正后的初始化SQL需补充schema权限:

CREATE USER adonis WITH ENCRYPTED PASSWORD 'adonis';
CREATE DATABASE adonis_app;
GRANT ALL PRIVILEGES ON DATABASE adonis_app TO adonis;
-- 授予public schema的操作权限
GRANT ALL PRIVILEGES ON SCHEMA public TO adonis;
-- 让后续创建的表默认给adonis权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO adonis;
-- 让后续创建的序列(serial类型依赖)默认给adonis权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO adonis;

问题2:操作是否有误或教程遗漏

你的操作完全正确,问题出在教程的内容遗漏:
入门教程常简化PostgreSQL的权限模型,只覆盖数据库级权限授予,但忽略了schema是实际存储对象的层级,建表、执行迁移必须要有对应schema的操作权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:56:06