记录 PostgreSQL 交互式查询

Rui*_*iro 4 postgresql debian

我有几个人直接在某些系统中进行一些数据库查询。

我想将所有交互式/手动完成的查询记录到安全的系统日志服务器,或者如果失败,则使用psql二进制客户端完成所有查询。

我正在使用 Debian Jessie、PostgreSQL 9.4 和 9.1。

我怎样才能做到这一点?

Nic*_*nes 5

设置配置变量的方法有多种,范围各异。

由于log_statement是仅限超级用户的设置,您可以排除所有客户端选项,并且服务器或数据库范围的设置对于您的情况来说可能过于广泛。

我相信这只会给您留下每个用户的选项,即:

ALTER USER interactive_user SET log_statement = 'all';
Run Code Online (Sandbox Code Playgroud)

或者如果它使事情更容易管理:

ALTER SYSTEM SET log_statement = 'all';
ALTER USER application_user SET log_statement = 'none';
Run Code Online (Sandbox Code Playgroud)

请注意,这些设置仅应用于连接,因此无法通过SET ROLE命令触发(或绕过)。

当然,这一切都假设您的应用程序和交互式用户不共享登录名,但我认为没有其他任何东西具有正确的粒度级别。