PostgreSQL 10.4创建新用户时postgres密码验证失败求助
解决PostgreSQL 10.4密码验证失败并创建新用户的方案
你碰到的核心问题是postgres超级用户的密码验证不匹配,系统自动从pgpass.conf读取的密码和实际密码不一致。下面是几个可行的分步解决方案:
方案一:绕过pgpass直接输入正确密码
先排除pgpass.conf的干扰,直接手动输入密码验证:
- 找到
C:\Users\Gautam Jajoo\AppData\Roaming/postgresql/pgpass.conf,把它重命名(比如改成pgpass.conf.bak)或者暂时删除。 - 打开CMD,执行正确的创建用户命令(注意去掉末尾多余的
mydb,创建角色不需要指定数据库):psql -U postgres -c "CREATE ROLE gautam LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE;" - 这时会弹出密码输入提示,输入你安装PostgreSQL时设置的postgres超级用户密码即可。
- 如果成功创建用户,说明原来的
pgpass.conf里的密码有误。之后可以重新创建该文件,格式必须严格为:hostname:port:database:username:password,比如针对本地数据库可以写:localhost:5432:*:postgres:你的正确密码
方案二:重置postgres超级用户密码(如果你忘了密码)
如果完全记不起postgres的密码,就需要重置:
- 停止PostgreSQL服务:右键CMD选择「以管理员身份运行」,执行(注意服务名可能是
postgresql-10,可以通过services.msc查看准确名称):net stop postgresql-x64-10 - 修改认证配置:找到PostgreSQL的数据目录(默认是
C:\Program Files\PostgreSQL\10\data),打开pg_hba.conf文件。找到所有以host开头的行,把认证方式从md5/scram-sha-256改成trust,这样暂时允许无密码登录。 - 重启服务:执行:
net start postgresql-x64-10 - 重置密码:执行命令设置新密码:
psql -U postgres -c "ALTER USER postgres PASSWORD '你的新密码';" - 恢复认证配置:把
pg_hba.conf里的trust改回原来的md5/scram-sha-256,然后重启服务:net stop postgresql-x64-10 && net start postgresql-x64-10 - 现在就可以用新密码执行创建用户的命令了。
内容的提问来源于stack exchange,提问作者Gautam Jajoo
相关产品推荐
相关产品推荐

