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

Win10下PSQL登录报错FATAL: role "User" does not exist 解决方案求助

解决方案

根因说明

psql 未指定 -U 参数时,会按以下优先级读取默认登录角色:

  1. 系统环境变量 PGUSER 的值
  2. 当前Windows系统的登录用户名
    你遇到的删除Nistic角色后仍默认尝试用该账号登录的问题,是因为系统中存在PGUSER环境变量,值被设置为了Nistic,优先级高于系统用户名。

方案1:修改默认登录规则(无需保留Nistic角色)

  • 右键Windows开始菜单,选择「系统」→ 点击页面底部「高级系统设置」→ 点击「环境变量」
  • 分别检查「当前用户的变量」和「系统变量」两个列表,找到名为PGUSER的条目后直接删除
  • 保存设置后重启终端,此时执行psql会默认使用你的Windows系统用户名作为登录角色;如果需要默认用postgres登录,可以新建PGUSER变量,值设置为postgres即可

方案2:创建匹配默认角色的无密码超级用户(保留现有默认登录名)

  • 先使用已知可用的方式登录数据库:psql -U postgres
  • 执行以下SQL语句创建对应角色(如果需要匹配最初的"User"角色报错,把下方Nistic替换为User即可):
-- 创建无密码超级用户,允许登录
CREATE ROLE Nistic WITH SUPERUSER LOGIN PASSWORD '';
-- 创建和角色同名的默认数据库,避免登录时提示找不到数据库
CREATE DATABASE Nistic OWNER Nistic;
  • 退出数据库后重启终端,直接执行psql即可正常登录

验证方法

修改完成后在终端执行echo %PGUSER%,即可查看当前生效的psql默认登录角色,确认和预期一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:15:01