como efetuar login na versão específica do postgresql

5

Eu tenho várias versões do postgresql instaladas na minha caixa do Ubuntu. 9.3 é para coisas reais. Acabei de instalar o 9.4 para fazer alguns testes com replicação.

Eis por que acho que tenho duas versões em execução:

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$ 

Além disso:

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

E finalmente:

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]

Perguntas:

Eu tenho duas perguntas.

  1. Supondo que eu tenha instalado corretamente dois servidores diferentes, como lanço linhas de comando para cada versão dos servidores que tenho?

    Eu normalmente faço login nos bancos de dados 9.3 fazendo algo assim:

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. qual é a referência "psql (9.4.1, servidor 9.3.5)" acima?
    Isso significa que tenho um cliente 9.4.1 em execução em um servidor 9.3?

Obrigado.

EDIT 1

eu apenas tentei:

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

e também:

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 ...
    
por dot 18.02.2015 / 15:58

1 resposta

1
  

Supondo que eu tenha instalado corretamente dois servidores diferentes, como lanço linhas de comando para cada versão dos servidores que tenho?

O comando para se conectar a uma porta específica para postgres é:

psql -h localhost -p 5433

Eu diria que você precisa usar ...

sudo -i -u postgres
psql -p 5433

como mínimo (5432 é o padrão). Do homem do 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
  

Qual é a referência "psql (9.4.1, servidor 9.3.5)" acima?

  • "psql 9.4.1" é a versão do psql. Esse script provavelmente foi atualizado quando você instalou o servidor 9.4. psql --version mostra a versão de um comando. Você precisará da versão 9.4.1 do psql para suportar o servidor 9.4 e provavelmente é retrocompatível com 9.3, mas a versão 9.3 do psql não suportará o servidor 9.4. Então parece correto para mim.
  • "servidor 9.3.5" é o servidor.
por Rinzwind 18.02.2015 / 16:11