如何登录特定的 postgresql 版本

dot*_*dot 6 server 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$ 
Run Code Online (Sandbox Code Playgroud)

还:

test@testdev:/usr/lib/postgresql$ ls
9.3  9.4
Run Code Online (Sandbox Code Playgroud)

最后:

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]
Run Code Online (Sandbox Code Playgroud)

问题:

我有两个问题。

  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)
Run Code Online (Sandbox Code Playgroud)
  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
Run Code Online (Sandbox Code Playgroud)

并且:

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 ...
Run Code Online (Sandbox Code Playgroud)

Rin*_*ind 6

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

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

psql -h localhost -p 5433
Run Code Online (Sandbox Code Playgroud)

我假设你需要使用...

sudo -i -u postgres
psql -p 5433
Run Code Online (Sandbox Code Playgroud)

作为最低限度(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
Run Code Online (Sandbox Code Playgroud)

上面的“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 服务器。所以对我来说似乎是正确的。
  • “服务器9.3.5”是服务器。