暗黑文:如何篡改 PostgreSQL 系统数据

From: Quan Zongliang <zongliang(dot)quan(at)postgresdata(dot)com>
To: "pgsql-zh-general(at)postgresql(dot)org" <pgsql-zh-general(at)postgresql(dot)org>
Subject: 暗黑文:如何篡改 PostgreSQL 系统数据
Date: 2016-05-02 14:01:43
Message-ID: 57275DC7.10109@postgresdata.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-zh-general

写这篇文章的目的其实是给DBA一个修复数据库的途径,希望有用。

此方法可能带来严重后果,请务必谨慎使用。
在清楚自己要做什么的前提下,它可能会带来一些福利,否则恐怕只有老天爷知道
会发生什么,所以请务必谨慎使用。

1、这种操作能力的出处来自 initdb,具体请看 initdb.c 源代码。
static const char *backend_options = "--single -F -O -c
search_path=pg_catalog -c exit_on_error=true";

2、如果我们试图修改 pg_catalog,会收到如下提示
ERROR: permission denied to create "pg_catalog.xxx"
DETAIL: System catalog modifications are currently disallowed.

3、进入具有修改数据库系统表的命令行
./postgres --single -F -O -c search_path=pg_catalog -c
exit_on_error=true -D ../data flying

search_path=pg_catalog 是操作的目标 namespace(也就是外在表现的 schema
自行查阅文档),这就是文档中的 search_path 参数。

exit_on_error=true 遇到错误立即退出

最后一个为数据库名

3、创建 / 修改 / 操作 某个对象
此处请自行想象 ……

4、退出方法

a) 如果我们设置了 search_path=pg_catalog,可以随便输入一个出错的命令即可
结束。
b) 最安全的办法 Ctrl + D

原文地址
http://my.oschina.net/quanzl/blog/668795

--------------------------------------------
权宗亮

Responses

Browse pgsql-zh-general by date

  From Date Subject
Next Message Quan Zongliang 2016-05-02 14:04:06 Re: 暗黑文:如何篡改 PostgreSQL 系统数据
Previous Message Yuwei Peng 2016-03-17 07:54:26 Re: [pgsql-zh-general] [pgsql-zh-general] 寻求pg大牛给我们做三天的培训