4.4 KiB
date, updated, title
| date | updated | title |
|---|---|---|
| 2026-1-10 14:54:51 | 2026-1-10 14:54:51 | PG数据库忘记了管理员账号和密码处理方式 |
一、核心原理(无需原密码)
PostgreSQL 支持系统 postgres 用户免密本地登录,这是超级管理员级别的兜底权限,完全绕过数据库层面的账号密码校验,是重置管理员账号密码的核心依据,也是官方推荐的安全重置方式。
二、完整重置步骤(按顺序执行,必成功)
步骤 1:切换系统 postgres 用户,免密进入 PG 18 终端(核心)
直接执行以下命令,无需输入任何密码,即可登录 PG 18 数据库超级管理员终端(解决「忘记账号密码」核心问题):
# 核心命令:指定18版本端口(默认5432),免密登录
sudo -u postgres psql -p 5432
✅ 执行成功后,终端会进入 PG 专属命令行,提示符变为:postgres=# → 表示已获取最高权限。
步骤 2:重置「默认管理员 postgres」密码(最常用)
PG 默认的超级管理员账号就是 postgres,99% 的场景重置这个账号即可,在上述 postgres=# 终端中执行以下 SQL(直接复制):
-- 重置postgres管理员密码,替换【你的新密码】为自定义密码(必填)
ALTER USER postgres WITH PASSWORD '你的新密码';
-- 示例:ALTER USER postgres WITH PASSWORD 'Pg@123456';
✅ 执行成功提示:ALTER ROLE → 密码重置完成。
步骤 3:【兜底】若忘记自定义管理员账号 → 查看所有数据库用户
如果你的业务用了非默认 postgres的自定义管理员账号(忘记账号名),在 PG 终端执行以下命令,列出所有数据库用户,找到你的管理员账号:
-- 查看PG所有用户(包含管理员/普通用户)
\du
✅ 输出示例(Role name 列就是账号名,Superuser 为yes的就是管理员):
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
testadmin | Superuser, Create DB | {} -- 这就是你的自定义管理员账号
步骤 4:【可选】重置自定义管理员账号密码
如果步骤 3 查到了自定义管理员账号(比如testadmin),继续在 PG 终端执行重置命令:
-- 格式:ALTER USER 你的自定义账号 WITH PASSWORD '新密码';
ALTER USER testadmin WITH PASSWORD '你的新密码';
步骤 5:退出 PG 终端,配置生效
执行完所有重置操作后,输入以下命令退出 PG 终端,回到系统命令行:
\q
三、关键验证:用新密码登录测试(必做)
执行以下命令,用重置后的账号 + 密码登录 PG,验证是否生效:
# 本地连接测试(替换端口/账号/密码为你的实际信息)
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
执行后会提示输入密码,输入你刚设置的新密码,✅ 成功进入 postgres=# 终端 → 重置完成!
四、附加解决:远程 / 客户端仍无法用新密码连接(高频坑)
重置密码后,本地能登录但Navicat/DBeaver/ 后端服务无法连接,是 PG 的访问权限配置拦截,只需补充 2 步(适配你的 18 版本):
1. 放行密码认证权限(修改 pg_hba.conf)
sudo vim /etc/postgresql/18/main/pg_hba.conf
找到文件末尾的认证规则,确保存在以下配置(无则手动添加):
# 允许密码方式连接(必须配置,否则新密码无效)
host all all 0.0.0.0/0 scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
2. 重启 PG 18 服务,所有配置生效
sudo systemctl restart postgresql@18-main.service
极简总结(核心命令速查)
# 1. 免密登录PG18
sudo -u postgres psql -p 5432
# 2. 重置默认管理员密码(PG终端内执行)
ALTER USER postgres WITH PASSWORD '你的新密码';
# 3. 退出+重启服务
\q
sudo systemctl restart postgresql@18-main.service
按以上步骤操作,无论你是忘记管理员账号、密码,还是两者都忘,都能 100% 重置恢复,且完美适配你的 Debian+PG18 环境!