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.
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)
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 ...
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 --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.