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
相关产品推荐
相关产品推荐

