postgresql - 维护与不同服务器上的 PostgreSQL 数据库的连接

标签 postgresql pgadmin

目前我有 2 台 PostgreSQL 服务器

  • PostgreSQL 9.4
    • 数据库1
    • 数据库2
    • 数据库3
  • PostgreSQL 9.6
    • 数据库1
    • 数据库2
    • 数据库3

在每台服务器上,有时我需要进行架构修改,因此我必须阻止与该特定数据库的所有连接并关闭所有现有连接。由于某些数据库的数据库名称相同,最好的方法是什么?感谢您的帮助。

我正在使用 pgAdmin 4.1.3。

断开所有现有连接并阻止所有新连接以及允许新连接返回的 SQL 代码是什么?

最佳答案

select pg_terminate_backend(pid) from pg_stat_activity where pid <> pg_backend_pid();

将杀死除您之外的所有 session 。您可以使用 pg_cancel_backend 取消而不是杀死...

要阻止新连接,您可以执行以下任一操作:

  1. 更改端口(需要重启)
  2. 更改 listen_addresses(需要重启)
  3. 在 pg_hba.conf 的其他行之上添加 host all all all 0.0.0.0/0 reject(需要重新加载)
  4. 为所有用户更改用户设置 default_transaction_read_only = on
  5. update pg_database set datallowconn = false where datname = '...' or ALTER DATABASE "name"ALLOW_CONNECTIONS false 如果你运行 9.5 or higher

第四个很容易克服,但不需要更改配置。

第五个not meant for such usage ,但在这里绝对有帮助 - 谢谢@Nick Barnes

关于postgresql - 维护与不同服务器上的 PostgreSQL 数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42928375/

相关文章:

sql - postgres 相当于 all_constraints

sql - PostgreSQL 中的聚簇索引?

sql - 给定年份创建的所有表的打印大小

postgresql - pgadmin:收到 "DETAIL: User does not have CONNECT privilege."错误

Postgresql Ubuntu 的奇怪行为(版本不兼容?)

python - pg_dump : error: could not translate host name "localhost" to address: Unknown server error

postgresql - 适用于 Windows 的 pgadmin3 深色主题?

r - 如何从 postgresql 数据库中提取数据到我的 shinyapps.io

sql - 在 WHERE 子句中引用列名别名

sql - 根据sql中的月份和年份选择一行