前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >PostgreSQL 变成"户外人士",后的自救的方法

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

作者头像
AustinDatabases
发布2025-01-03 20:38:40
发布2025-01-03 20:38:40
8000
代码可运行
举报
文章被收录于专栏:AustinDatabases
运行总次数:0
代码可运行

题目很新颖,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.5432" 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 此时可以进行的是修复工作,不是正常工作

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

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

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

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

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

alter user postgres login;

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档