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

JHipster+PostgreSQL环境下Liquibase public schema权限拒绝求助

解决JHipster生产环境启动时Liquibase访问public schema权限不足问题
  • 重新执行完整的权限授予命令
    以PostgreSQL超级用户身份登录psql,切换到app1数据库后执行以下命令,覆盖现有对象及未来创建对象的权限:

    \c app1
    -- 授予public schema的所有权限
    GRANT ALL PRIVILEGES ON SCHEMA public TO app1;
    -- 授予schema内所有现有表、序列、函数的权限
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app1;
    GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO app1;
    GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO app1;
    -- 设置未来创建对象的默认权限
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO app1;
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO app1;
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO app1;
    
  • 检查application-prod.yml的数据库配置
    确保配置中明确指定public schema,避免连接时默认schema异常:

    spring:
      datasource:
        url: jdbc:postgresql://localhost:5432/app1?currentSchema=public
        username: app1
        password: [你的数据库密码]
      jpa:
        properties:
          hibernate:
            default_schema: public
    
  • 确认数据库的归属用户
    如果创建app1数据库时未指定归属用户,执行以下命令修正:

    ALTER DATABASE app1 OWNER TO app1;
    

    数据库归属用户正确能避免schema权限的继承问题。

  • 验证用户实际权限
    用app1用户登录psql,执行以下命令确认权限:

    SELECT current_user; -- 确认当前登录用户为app1
    \dn+ public; -- 查看public schema的权限列表,确保app1拥有USAGE、CREATE及其他必要权限
    
  • 清理Liquibase缓存后重试
    删除项目根目录下的target/liquibase文件夹,清除本地changelog缓存,再重新执行启动命令:

    rm -rf target/liquibase
    .\mvnw -Pprod
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:56:04