Psql
| Fiche express | |
|---|---|
| Commande | psql
|
| Connexion locale | sudo -u postgres psql
|
| Connexion réseau | psql -h host -U user -d base -W
|
| Voir aussi | PostgreSQL install · Pg dump |
psql est le client interactif en ligne de commande fourni avec PostgreSQL. Il permet de
se connecter à une instance, d'exécuter des requêtes SQL et dispose de méta-commandes
(préfixées par \) pour l'introspection (lister les bases, tables, rôles...).
Connexion
# Compte système postgres, connexion locale par socket (peer)
sudo -u postgres psql
# Connexion réseau explicite
psql -U username -h localhost -W
# Via un fichier de service (voir PostgreSQL debian)
psql service=<service>
Bannière de connexion typique :
psql (9.3.13) Type "help" for help. postgres=#
Méta-commandes utiles
| Commande | Effet |
|---|---|
\l |
lister les bases de données |
\c <base> |
se connecter à une autre base |
\dt |
lister les tables de la base courante |
\d <table> |
structure d'une table |
\d+ |
structure de tous les objets, avec détails supplémentaires |
\du |
lister les rôles |
\db |
lister les tablespaces |
\q |
quitter |
Administration
Créer une base
createdb -T template0 worlddb
psql worlddb < world.sql
psql worlddb
Changer le mot de passe d'un rôle
ALTER USER postgres WITH PASSWORD 'mot_de_passe';
Créer un rôle (CLI)
createuser login -P -D -A
(à vérifier) : syntaxe issue d'une version ancienne de createuser ; sur les
versions récentes, les options courantes sont -P (demande le mot de passe),
-s/-S (super-utilisateur ou non), -d/-D
(autorise ou non CREATEDB), -r/-R (autorise ou non
CREATEROLE) — se référer à createuser --help pour la version installée.
Créer un utilisateur et une base (SQL)
CREATE DATABASE databasename;
CREATE USER username WITH PASSWORD 'mot_de_passe';
GRANT ALL PRIVILEGES ON DATABASE databasename TO username;
Exécuter un script SQL en ligne de commande
psql -f lefichier.sql basecible
Transactions préparées bloquées
Une transaction préparée (two-phase commit, PREPARE TRANSACTION) laissée en
suspens après un incident (connexion coupée avant le COMMIT PREPARED/ROLLBACK
PREPARED) reste visible et peut bloquer le VACUUM sur les tables concernées
tant qu'elle n'est pas résolue :
SELECT * FROM pg_prepared_xacts;
ROLLBACK PREPARED '<id>';
Voir aussi
- PostgreSQL install — installation, pg_hba.conf, contrôle d'accès
- Pg dump — sauvegarde et restauration
- PostgreSQL debian — usage avancé (fichier de service, multi-instances)
- Sql — langage SQL générique