lockingPostgreSQL用户进行维护

在PostgreSQL 8.4.9与pgbouncer 1.3.4在pool_mode =会话(但有些用户直接连接到数据库) – 当我作为“超级用户”login

psql -U postgres -W postgres 

什么命令,请断开所有“普通用户”,并防止他们再次连接,而我进行维护(我想重命名一些表列以更一致的命名,并相应地更改一些存储过程)。

我在三号找不到它。 服务器pipe理文档。

或者我应该编辑pg_hba.conf并重新启动服务/进程?

就我所知,没有一个 – 我看不到它的价值。 PgSQL使您能够在现场修改数据库结构,并且在很多情况下都可以在单个事务中进行修改。

任何模式迁移的难点在于让数据库用户知道他们必须改变他们使用数据库的方式(修改调用数据库的代码,重写文档,重新训练执行手动的用户,即席查询) 。 防止用户在维护过程中进行连接并不能解决问题,因为只要允许用户重新连接,他们就会以旧的方式进行操作。 如果您能够在维护的同时对数据库的所有用户进行locking步骤迁移,那么您也可以告诉他们所有人在无论如何摆弄它时都停止使用数据库。

踢他们应该像这样简单:

 SELECT pg_terminate_backend( psa.procpid ) FROM pg_stat_activity psa JOIN pg_user u ON u.usesysid = psa.usesysid WHERE psa.procpid <> pg_backend_pid( ) AND psa.datname = current_database( ) AND u.usename NOT IN ('list', 'of', 'users', 'to', 'not', 'disconnect') ; 

您可以将它与revoke connect on <datname> from <role>或者编辑pg_hba.conf结合使用。

ref:“ 我如何从postgres数据库中分离所有其他用户?