web-dev-qa-db-fra.com

comment se connecter à une version spécifique de postgresql

J'ai plusieurs versions de postgresql installées sur ma boîte Ubuntu. 9.3 est pour de vrais trucs. Je viens d'installer la 9.4 pour faire quelques tests avec la réplication.

Voici pourquoi je pense avoir deux versions en cours d'exécution:

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$ 

Aussi:

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

Et enfin:

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]

Questions:

J'ai deux questions.

  1. En supposant que j'ai correctement installé deux serveurs différents, comment puis-je lancer des lignes de commande pour chaque version des serveurs que j'ai?

    Je me connecte normalement aux bases de données 9.3 en procédant comme suit:

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. qu'est-ce que "psql (9.4.1, serveur 9.3.5)" référence ci-dessus?
    Cela signifie-t-il qu'un client 9.4.1 s'exécute sur un serveur 9.3?

Merci.

EDIT 1

je viens d'essayer:

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

et aussi:

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 ...
5
dot

En supposant que j'ai correctement installé deux serveurs différents, comment puis-je lancer des lignes de commande pour chaque version des serveurs que j'ai?

La commande permettant de se connecter à un port spécifique pour postgres est la suivante:

psql -h localhost -p 5433

Je suppose que vous devez utiliser ...

Sudo -i -u postgres
psql -p 5433

comme un strict minimum (5432 est la valeur par défaut). De la psql man :

-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

Quelle est la référence "psql (9.4.1, serveur 9.3.5)" ci-dessus?

  • "psql 9.4.1" est la version de psql. Ce script a probablement été mis à jour lors de l'installation du serveur 9.4. psql --version affiche la version d'une commande. Vous aurez besoin de la version 9.4.1 de psql pour prendre en charge le serveur 9.4. Il est probablement rétrocompatible avec la version 9.3, mais la version 9.3 de psql ne prendra pas en charge le serveur 9.4. Cela me semble correct.
  • "serveur 9.3.5" est le serveur.
1
Rinzwind