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

Postgres+IntelliJ连接报错:FATAL role "username"不存在如何解决?

Postgres 28000 角色不存在报错排查方案

报错信息:指定的数据库用户名/密码组合被拒绝:[28000] FATAL: role "username" does not exist

按以下顺序排查即可:

  • 先确认连接的实例为docker启动的Postgres:执行docker ps找到对应Postgres容器的ID或名称,核对容器映射的端口、IP和IntelliJ数据库连接配置的地址端口完全一致,避免误连到本地其他Postgres实例。
  • 查看容器初始化的默认配置:执行docker inspect <容器ID/名称>,在Env字段下查找POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB三个环境变量的值,确认和IntelliJ中填写的连接信息一致。
  • 核对gradlew sDS任务的关联配置:检查项目gradle目录下对应sDS任务的配置代码,以及关联的数据库初始化sql脚本,确认脚本中是否有创建目标用户名的role、以及给角色分配对应数据库权限的语句,常见问题是初始化脚本仅创建了数据库,未生成对应角色。
  • 手动进入容器验证角色是否存在:执行docker exec -it <容器ID/名称> psql -U <默认管理员用户名,通常为postgres>进入数据库命令行,执行SELECT rolname FROM pg_roles;查看所有已创建的角色,确认目标username是否在返回结果中。
  • 若角色确实不存在,可手动创建并赋权:在psql命令行执行以下语句,替换为实际的用户名、密码和数据库名即可:
    CREATE ROLE 目标用户名 WITH LOGIN PASSWORD '对应密码';
    GRANT ALL PRIVILEGES ON DATABASE 目标数据库名 TO 目标用户名;
    
  • 若角色存在仍报错,检查大小写配置:Postgres默认对角色名、库名不区分大小写,若创建角色时用双引号强制指定了大写名称,IntelliJ连接配置中也要填写完全一致的大小写字符。
  • 所有配置修改完成后,重启gradlew sDS任务即可生效,重置数据库卷前注意提前备份存量数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:24:03