您现在的位置是:首页 > 编程 > 

PostgreSQL 变成"户外人士",后的自救的方法

2025-07-29 13:20:27
PostgreSQL 变成"户外人士",后的自救的方法 题目很新颖,PostgreSQL 是怎么把我给关到数据库里面出不来,登不进去,最后是怎么解决的,咱们且听这回分解。上回咱们说了,怎么安全配置PostgreSQL的自建数据库产品,但在配置的时候如果忘记一件事请,就会让PostgreSQL把你关到门外面去。我们演示一下这个过程,实际上我也真的被关到门外一次。具体怎么关到外面的

PostgreSQL 变成"户外人士",后的自救的方法

题目很新颖,PostgreSQL 是怎么把我给关到数据库里面出不来,登不进去,最后是怎么解决的,咱们且听这回分解。

上回咱们说了,怎么安全配置PostgreSQL的自建数据库产品,但在配置的时候如果忘记一件事请,就会让PostgreSQL把你关到门外面去。

我们演示一下这个过程,实际上我也真的被关到门外一次。具体怎么关到外面的我来演示一次。

在安装完数据库,为了安全和保证阿里云安全策略的扫描过关,PostgreSQL 的postgres账号必须关闭登录,有人可能问加密码不就完了吗?

那这个你就太单纯了,黑客攻击是不怕贼偷,就怕贼惦记着,你给PostgreSQL设置密码,黑客程序可以进行暴力,到时你的PG错误日志一堆登录密码错误的提示,他要是给开呢? 这锅不还是你的吗?

既然如此,那么就必须将数据库的Postgres账号禁用,在新安装的数据库中,应该先建立一个superuser账号,然后在设置postgres 账号登录的权限取消,工作完毕。但人的脑子有的时候是会出错的,我就一次将 postgres 的账号给设置后,突然清晰,我变成的 "户外人士"

代码语言:javascript代码运行次数:0运行复制
postgres=# 
postgres=# alter user postgres nologin;
ALTER ROLE
postgres=# 
postgres=# 
postgres=# 
postgres=# exit 
postgres@pg16:~$ psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.542" failed: FATAL:  role "postgres" is not permitted to log in
postgres@pg16:~$ 

此时新的数据库,也没有设置任何的superuser 那么这时我就妥妥的"户外人士"。这事情要事放到 MySQL 8 那么此时你连 skip-grant的机会都没有,但咱们这是PostgreSQL,不怕咱们有办法.

这里使用的办法就是PostgreSQL的单机模式,将用户的登录权限回, 操作方法也很简单

1 关闭现在的数据库服务

代码语言:javascript代码运行次数:0运行复制
postgres@pg16:~$ pg_ctl -D /pgdata/data/ stop
waiting for server to shut down.... done
server stopped
postgres@pg16:~$ 

2 启动PostgreSQL的单机模式

代码语言:javascript代码运行次数:0运行复制
postgres@pg16:~$ postgres --single -D /pgdata/data/ postgres

PostgreSQL stand-alone backend 16.0
backend> 

在进入到单用户模式,此时可以对数据库进行任何操作,但需要注意单用户模式的问题

1 单用户模式,只能有一个用户访问PG数据库

2 数据库此时并没有那些子进程工作,PG 此时可以进行的是修复工作,不是正常工作

单用户模式会绕过身份验证,给你最大的用户权限去处理任务

4 数据库在单用户模式是单进程模式工作,没有并发支持

5 虽然单用户模式还可以进行WAL的写入,但此时如vacuum checkpoint bgwrite等进程都不工作,如果要对数据进行了修改,需要进行手动的 checkpoint; 的命令操作,让数据刷到数据库中,作为一个完整的修改数据库数据后的动作。

6 尽量不要在单用户模式修改大量数据,数据库无法进行崩溃的恢复操作。

后面的事情就简单了,直接在单用模式,执行

alter user postgres login;

然后关闭单用户模式,后面在重新启动数据库,登录到数据库,做该做的工作,任务完成。PostgreSQL 数据库本身,在不少情况下都考虑到一些实际的问题,比如保留个 superuser登录的SESSIO ,单用户模式,这点 SQL SERVER 本身也有类似的功能,所以才有 PostgreSQL是最像商业数据库的开源数据库的美誉。

本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2025-01-02,如有侵权请联系 cloudcommunity@tencent 删除登录工作数据数据库postgresql

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1202239.html

相关标签:无
上传时间: 2025-07-24 01:35:54
留言与评论(共有 5 条评论)
本站网友 刺激战场下架
10分钟前 发表
实际上我也真的被关到门外一次
本站网友 kb2286198
29分钟前 发表
有人可能问加密码不就完了吗?那这个你就太单纯了
本站网友 治疗便秘的食物
27分钟前 发表
不怕咱们有办法.这里使用的办法就是PostgreSQL的单机模式
本站网友 oa无纸化办公系统
18分钟前 发表
那么就必须将数据库的Postgres账号禁用