恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
PostgreSQL 密码丢了、端口被占了,我是这么救回来的
首页
资讯中心
/
PostgreSQL 密码丢了、端口被占了,我是这么救回来的
PostgreSQL 密码丢了、端口被占了,我是这么救回来的
发布时间:2026/10/17 2:34:16
一、背景本地 PostgreSQL 数据库的 用户密码未知导致后台服务RT报错textSystem.InvalidOperationException: The Connection is not open.堆栈指向PostgresqlDB.ExecuteReader说明数据库连接失败。同时项目配置文件里写的是Passwordyour_password但本地数据库密码不是这个导致连接被拒绝。核心问题下载的数据库自动跳过密码设置导致密码随机生成重新下载仍然不行。数据库密码与配置文件不一致需要重置本地密码。二、具体思路核心逻辑PostgreSQL 的密码认证由pg_hba.conf文件控制。默认情况下本地连接使用md5认证需要密码。如果密码未知可以通过以下思路绕过核心思路临时把认证方式改成trust免密无密码登录后用ALTER USER修改密码再把认证方式改回md5。整个流程分五步改配置把pg_hba.conf里的md5改成trust重启服务让配置生效无密码登录用psql免密进入数据库改密码执行ALTER USER设置新密码恢复配置把trust改回md5重启服务为什么这样做不需要知道旧密码直接绕过认证改完后恢复安全配置不影响生产环境只影响本地连接不影响远程三、具体做法如下Windows 为例环境信息操作系统Windows 10/11PostgreSQL 版本9.5安装路径C:\Program Files\PostgreSQL\9.5\数据目录C:\Program Files\PostgreSQL\9.5\data\第一步修改pg_hba.conf文件位置textC:\Program Files\PostgreSQL\9.5\data\pg_hba.conf用管理员身份打开记事本右键记事本 - 以管理员身份运行 - 文件 - 打开。找到以下两行texthost all all 127.0.0.1/32 md5 host all all ::1/128 md5把md5改成trusttexthost all all 127.0.0.1/32 trust host all all ::1/128 trust保存文件。注意trust表示“本地连接免密”仅用于临时重置密码。改完后必须恢复成md5。第二步重启 PostgreSQL 服务方式一用命令重启打开 CMD进入bin目录cmdcd /d C:\Program Files\PostgreSQL\9.5\bin执行cmdpg_ctl restart -D C:\Program Files\PostgreSQL\9.5\data方式二用 Windows 服务管理器按Win R输入services.msc找到postgresql-x64-9.5右键 - 重启。第三步无密码登录数据库在 CMD 中执行cmdpsql -U postgres -h localhost因为pg_hba.conf已经改成trust这次不会提示输入密码直接进入textpostgres#注意如果提示fe_sendauth: no password supplied说明pg_hba.conf没改对或者服务没重启。第四步修改密码在postgres#提示符下执行sqlALTER USER postgres WITH PASSWORD your_password;说明换成你想要的密码这里跟项目配置文件对齐。单引号必须是英文单引号。分号;不能少。回车后如果显示ALTER ROLE说明修改成功。退出 psqltext\q第五步恢复认证配置再次用管理员身份打开pg_hba.conf把刚才改的trust改回md5texthost all all 127.0.0.1/32 md5 host all all ::1/128 md5保存文件。重启 PostgreSQL 服务cmdpg_ctl restart -D C:\Program Files\PostgreSQL\9.5\data第六步验证密码是否修改成功在 CMD 中执行cmdpsql -U postgres -h localhost这次会提示输入密码text用户 postgres 的口令盲打 your_password输入时不显示任何字符回车。成功进入your_password#→ 密码修改成功。提示password authentication failed→ 密码没改成功检查pg_hba.conf是否改对、服务是否重启。四、 常见问题与踩坑记录问题 1psql: 无法联接到服务器: Connection refused原因PostgreSQL 服务没启动。解决执行pg_ctl start -D C:\Program Files\PostgreSQL\9.5\data。问题 2psql: fe_sendauth: no password supplied原因pg_hba.conf没改成trust或者改完没重启服务。解决重新检查配置文件重启服务。问题 3password authentication failed for user your_password原因密码不对。解决重新走一遍trust绕过流程用ALTER USER改密码。问题 4改完密码后RT 还是报The Connection is not open原因RT 的连接字符串里数据库地址可能不是localhost而是内网 IP。解决去VceClusterRT项目的App.config里确认ConnectionString里的Server是什么。如果是内网 IP说明 RT 连的是内网数据库本地密码改了也没用。问题 5pg_ctl命令找不到原因不在bin目录下。解决先cd /d C:\Program Files\PostgreSQL\9.5\bin或者把bin目录加到系统环境变量 PATH 里。核心口诀改 trust → 重启 → 免密登录 → ALTER USER → 改回 md5 → 重启 → 验证。一句话总结PostgreSQL 忘记密码不可怕通过临时调整pg_hba.conf的认证方式可以无密码进入数据库重置密码。关键是改完必须恢复md5否则数据库会处于无密码保护的危险状态