使用只读访问连接到 Postgres 数据库。

tom*_*les 11 postgresql

是否可以通过 psql 客户端将我与数据库的连接限制为只读。IE 用于连接到数据库的角色对其拥有完全权限,但我想将我的某些连接限制为只读。

这是可能的还是我必须简单地创建一个具有我所需权限的新数据库角色。

吖奇说*_*HUō 7

为什么不只是

SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY;

该命令可以在连接建立后发出,即在启动并连接到数据库后输入“psql”。它将影响当前 psql 会话中启动的所有事务。该命令有一个变体,仅影响当前事务(请参阅下面的文档)。

这确实提供了防止操作员意外修改重要数据的保护措施,但不是安全的只读 - 有权访问此连接的攻击者可以简单地将特征再次设置回“读写”。

Postgresql 文档在这里


bra*_*obo 2

根据@Vao的评论,只需使用:

SET default_transaction_read_only = on

这是要应用于连接设置的配置。ie 可以放置在您的 psqlrc 或 ~/.psqlrc 文件中以影响 psql 的所有未来调用。

这确实提供了防止操作员意外修改重要数据的保护措施,但不是安全的只读 - 有权访问以这种方式创建的连接的攻击者可以简单地将特征再次设置回“读写”。

Postgresql 文档在这里