From e489880d9f475e39d22c524be7bac2d4aa035085 Mon Sep 17 00:00:00 2001 From: cuianbing Date: Sat, 10 Jan 2026 14:58:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=93=9D=20PG=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=BF=98=E8=AE=B0=E4=BA=86=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=92=8C=E5=AF=86=E7=A0=81=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PG数据库忘记了管理员账号和密码.md | 115 ++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 PG数据库忘记了管理员账号和密码.md diff --git a/PG数据库忘记了管理员账号和密码.md b/PG数据库忘记了管理员账号和密码.md new file mode 100644 index 0000000..efb8d40 --- /dev/null +++ b/PG数据库忘记了管理员账号和密码.md @@ -0,0 +1,115 @@ +--- +date: 2026-1-10 14:54:51 +updated: 2026-1-10 14:54:51 +title: PG数据库忘记了管理员账号和密码处理方式 +--- + +## 一、核心原理(无需原密码) + +PostgreSQL 支持**系统 postgres 用户免密本地登录**,这是超级管理员级别的兜底权限,完全绕过数据库层面的账号密码校验,是重置管理员账号密码的核心依据,也是官方推荐的安全重置方式。 + +## 二、完整重置步骤(按顺序执行,必成功) + +### 步骤 1:切换系统 postgres 用户,免密进入 PG 18 终端(核心) + +直接执行以下命令,**无需输入任何密码**,即可登录 PG 18 数据库超级管理员终端(解决「忘记账号密码」核心问题): + +```bash +# 核心命令:指定18版本端口(默认5432),免密登录 +sudo -u postgres psql -p 5432 +``` + +✅ 执行成功后,终端会进入 PG 专属命令行,提示符变为:`postgres=#` → 表示已获取最高权限。 + +### 步骤 2:重置「默认管理员 postgres」密码(最常用) + +PG 默认的超级管理员账号就是 `postgres`,99% 的场景重置这个账号即可,在上述 `postgres=#` 终端中执行以下 SQL(直接复制): +```sql +-- 重置postgres管理员密码,替换【你的新密码】为自定义密码(必填) +ALTER USER postgres WITH PASSWORD '你的新密码'; +-- 示例:ALTER USER postgres WITH PASSWORD 'Pg@123456'; +``` + +✅ 执行成功提示:`ALTER ROLE` → 密码重置完成。 + +### 步骤 3:【兜底】若忘记自定义管理员账号 → 查看所有数据库用户 + +如果你的业务用了**非默认 postgres**的自定义管理员账号(忘记账号名),在 PG 终端执行以下命令,**列出所有数据库用户**,找到你的管理员账号: +```sql +-- 查看PG所有用户(包含管理员/普通用户) +\du +``` + +✅ 输出示例(`Role name` 列就是账号名,`Superuser` 为`yes`的就是管理员): +```plaintext + 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 终端执行重置命令: + +```sql +-- 格式:ALTER USER 你的自定义账号 WITH PASSWORD '新密码'; +ALTER USER testadmin WITH PASSWORD '你的新密码'; +``` + +### 步骤 5:退出 PG 终端,配置生效 + +执行完所有重置操作后,输入以下命令退出 PG 终端,回到系统命令行: +```sql +\q +``` + +## 三、关键验证:用新密码登录测试(必做) + +执行以下命令,用**重置后的账号 + 密码**登录 PG,验证是否生效: + +```bash +# 本地连接测试(替换端口/账号/密码为你的实际信息) +psql -h 127.0.0.1 -p 5432 -U postgres -d postgres +``` + +执行后会提示输入密码,输入你刚设置的新密码,✅ 成功进入 `postgres=#` 终端 → 重置完成! + +## 四、附加解决:远程 / 客户端仍无法用新密码连接(高频坑) + +重置密码后,本地能登录但**Navicat/DBeaver/ 后端服务**无法连接,是 PG 的**访问权限配置拦截**,只需补充 2 步(适配你的 18 版本): +### 1. 放行密码认证权限(修改 pg_hba.conf) + +```bash +sudo vim /etc/postgresql/18/main/pg_hba.conf +``` + +找到文件末尾的认证规则,**确保存在以下配置**(无则手动添加): + +```ini +# 允许密码方式连接(必须配置,否则新密码无效) +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 服务,所有配置生效 + +```bash +sudo systemctl restart postgresql@18-main.service +``` + + +## 极简总结(核心命令速查) + +```bash +# 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 环境! \ No newline at end of file