如何登录到特定的 postgresql 版本

如何登录到特定的 postgresql 版本

我的 ubuntu 机器上安装了多个版本的 postgresql。9.3 是真正的版本。我刚刚安装了 9.4 来做一些复制测试。

这就是我认为运行两个版本的原因:

test@testdev:/usr/lib/postgresql$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
9.3 main    5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
9.4 main    5433 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
test@testdev:/usr/lib/postgresql$ 

还:

test@testdev:/usr/lib/postgresql$ ls
9.3  9.4

最后:

test@testdev:~$ /etc/init.d/postgresql stop
 * Stopping PostgreSQL 9.3 database server
     * Error: You must run this program as the cluster owner (postgres) or root [fail]
 * Stopping PostgreSQL 9.4 database server
     * Error: You must run this program as the cluster owner (postgres) or root [fail]

问题:

我有两个问题。

  1. 假设我已经正确安装了两个不同的服务器,那么如何为每个版本的服务器启动命令行?

    我通常通过执行以下操作来登录 9.3 数据库:

test@testdev:/usr/lib/postgresql$ sudo -i -u postgres
postgres@testdev:~$ psql
psql (9.4.1, server 9.3.5)
Type "help" for help.
postgres=# select version();

                                             version                                                
------------------------------------------------------------------------------------------------------
 PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.9.1-16ubuntu6) 4.9.1, 64-bit
(1 row)
  1. 什么是“psql(9.4.1,服务器 9.3.5)”参考上述内容?
    这是否意味着我在 9.3 服务器上运行了 9.4.1 客户端?

谢谢。

编辑1

我刚刚尝试过:

test@testdev:/usr/lib/postgresql$ sudo -i -u postgres:5433
sudo: unknown user: postgres:5433
sudo: unable to initialize policy plugin

并且:

test@testdev:/usr/lib/postgresql$ sudo -i -u postgres --port 5433
sudo: unrecognized option '--port'
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file ...

答案1

假设我已经正确安装了两个不同的服务器,那么如何为每个版本的服务器启动命令行?

连接到 postgres 特定端口的命令是:

psql -h localhost -p 5433

我认为您需要使用...

sudo -i -u postgres
psql -p 5433

作为最低限度(5432 是默认值)。从psql 手册

-p port
--port=port

Specifies the TCP port or the local Unix-domain socket file extension 
on which the server is listening for connections. 
Defaults to the value of the PGPORT environment variable or, 
if not set, to the port specified at compile time, usually 5432

上面的“psql(9.4.1,服务器9.3.5)”参考是什么?

  • “psql 9.4.1” 是 psql 版本。该脚本可能在您安装 9.4 服务器时进行了更新。psql --version显示命令的版本。您需要 9.4.1 版本的 psql 来支持 9.4 服务器,它可能向后兼容 9.3,但 9.3 版本的 psql 不支持 9.4 服务器。所以在我看来似乎是正确的。
  • “server 9.3.5”是服务器。

相关内容