Windows10安装Postgres后运行psql要求输入未创建的非超级用户密码怎么办
PostgreSQL Windows端默认登录用户及密码修改解决方案
问题根因
PostgreSQL的psql客户端默认会尝试使用当前Windows系统的用户名作为登录数据库的角色名,你安装时没有创建和系统用户名同名的数据库角色,因此会出现要求输入未知密码、修改密码时报role [username] does not exist的问题。
设置psql默认使用postgres超级用户登录
不需要每次输入psql -U postgres的配置方法如下:
- 打开Windows系统环境变量配置页面:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「用户变量」或「系统变量」区域点击「新建」,填写:
- 变量名:
PGUSER - 变量值:
postgres
- 变量名:
- 保存配置后重启所有正在运行的命令行终端,后续直接运行
psql就会默认使用postgres超级用户登录,提示输入postgres用户的密码即可。
非超级用户密码设置/修改方法
首先确认角色存在
使用超级用户登录PostgreSQL:
psql -U postgres
输入安装时设置的postgres超级用户密码进入交互终端后,执行\du命令查看所有已存在的数据库角色,确认你要修改密码的角色名称是否正确(PostgreSQL默认会将未加双引号的标识符转为小写,如ALTER ROLE LiMing会默认查找liming角色,名称不匹配就会报错)。
新建角色(如果目标角色不存在)
如果需要创建和Windows系统用户名同名的角色,执行以下语句:
CREATE ROLE 你的Windows系统用户名 WITH LOGIN PASSWORD '你要设置的密码' CREATEDB;
其中CREATEDB是给该角色授予建库权限,你可以根据实际需求调整权限配置。
修改已有角色密码
确认角色名称正确后,执行以下语句修改密码即可:
ALTER ROLE 目标角色名 WITH PASSWORD '新密码';
内容的提问来源于stack exchange,提问作者zedzorander
相关产品推荐
相关产品推荐

