12) postgres

Created samedi 13 février 2016


Par Jeff MacDonald — http://pgfoundry.org/docman/?group_id=1000089, BSD, https://commons.wikimedia.org/w/index.php?curid=1395316
Postgres SQL est un système de gestion de base de données relationnel et objet "libre"; il est issus du redéveloppement de de ingres en 1985 auquel ont été ajouté 10 ans plustard les fonctions SQL;
postgres est très apprécié pour sa stabilité et ses performances.

Postgres est supporté par la pluspart des plateformes; et est également connu pour ses multiples possibilité de programmation.
Il permet la gestion des types de données audelà des INT; FLOAT ou VAR, comme par exemple les coordonnées GPS avec POSTGIS.

Outils d'administration


Interfaces utilisateurs

Outils connexes

Récupération de la clé

1 sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

C’est une clé permettant d'identifier le serveur de manière fiable. Elle est récupérable facilement et doit correspondre avec la clé privée du serveur lors de l'échange.

Ajout des dépots 

La liste des dépots se trouve ici, il est simple de vérifier si notre système y est. Et il y en a beaucoup.
http://apt.postrgresql.org/pub/repos/apt/
Sous debian jessie modifier le fichier source.list

1 #vi /etc/apt/sources.list
2 deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main 9.4    
3 deb-src http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main 9.4

Installation

1 # apt-get install postgresql-9.4 postgresql-contrib-9.4 postgresql-plperl-9.4
2 
3 Paramétrage de ssl-cert (1.0.35) ...
4 Paramétrage de postgresql-common (172.pgdg80+1) ...
5 Ajout de l utilisateur postgres au groupe ssl-cert
6 
7 Creating config file '/etc/postgresql-common/createcluster.conf with new version'
8 
9 Creating config file '/etc/logrotate.d/postgresql-common with new version'
10 Building PostgreSQL dictionaries from installed myspell/hunspell packages...
11 Removing obsolete dictionary files:
12 Paramétrage de postgresql-9.4 (9.4.6-1.pgdg80+1) ...
13 Creating new cluster 9.4/main ...
14   config '/etc/postgresql/9.4/main'
15   data   '/var/lib/postgresql/9.4/main'
16   locale 'fr_FR.UTF-8'
17   socket '/var/run/postgresql'
18   port   '5432'
19 update-alternatives: utilisation de « '/usr/share/postgresql/9.4/man/man1/postmaster.1.gz »' pour fournir « /usr/share/man/man1/postmaster.1.gz » (postmaster.1.gz) en mode automatique

Il faut également ajouter l'adminpack, il me sera réclamé pour phppgadmin.

1 postgres=# CREATE EXTENSION adminpack;
2 CREATE EXTENSION
3 postgres=# 

Configuration

Postgres s'installe dans 2 répertoires différents:

9.4 correspond à la version de postgres, comprendre par là qu'il peut y avoir , d'autres répetoires si ily a une mise à jour..

1 root@tpsql:/home/username# ls /var/lib/postgresql/9.4/main/
2 base	 pg_commit_ts  pg_multixact  pg_serial	   pg_stat_tmp	pg_twophase  postgresql.auto.conf
3 global	 pg_dynshmem   pg_notify     pg_snapshots  pg_subtrans	PG_VERSION   postmaster.opts
4 pg_clog  pg_logical    pg_replslot   pg_stat	   pg_tblspc	pg_xlog      postmaster.pid

1 root@tpsql:/home/username# ls /etc/postgresql/9.4/main/
2 environment      'pg_hba.conf'      'postgresql.conf'  
3 pg_ctl.conf      pg_ident.conf    start.conf       

Le fichier pg_hba.conf gère les methodes de connexions et d'authentification; il faut le modifier.
ça syntaxe ressemble à sa, pour les connexions en IPv4:

1 #Connexion distante en IPv4
2 #TYPE   DATABASE        USER            ADDRESS         METHOD
3 host    all     userdbname		172.25.3.44/24          md5
4 host    all     userdbname		192.168.8.100/24        md5
5 host    all     postgres        172.25.3.44/24          md5
6 host    all     postgres        192.168.8.100/24        md5

DO NOT DISABLE

C'est ce qui permet a postgres de se connecter en local. De plus le message est assez clair, faites très attention si vous souhaitez le modifier.

1 # DO NOT DISABLE!
2 # If you change this first entry you will need to make sure that the
3 # database superuser can access the database using some other method.
4 # Noninteractive access to all databases is required during automatic
5 # maintenance (custom daily cronjobs, replication, and similar tasks).
6 #
7 # Database administrative login by Unix domain socket
8 local   all             postgres                                peer

Socket unix

Tout les utilisateur de la base, peuvent se connecter avec socket unix local, avec un mot de passe

1 # IPv4 local connections:
2 host    all             all             127.0.0.1/32            md5

Mot de passe postgres unix

Un utilisateur postgrés sans mot de passe et crée , je lui met un mot de passe

1 su – postgres
2 postgres@gally:~$
3 #Pas de mot de passe

Correction


Création du mot de passe

1 root@gally : ~# passwd postgres
2 Saisissez le nouveau mot de passe unix :
3 Saisissez-le à nouveau :

Mot de passe postgres postgreSQL

1 su - postgres
2 Mot de passe : 
3 postgres@gally:~$ psql
4 psql (9.4.5)
5 Saisissez « help » pour l aide.
6 
7 postgres=# \password postgres
8 Saisissez le nouveau mot de passe : 
9 Saisissez-le à nouveau : 
10 postgres=# 

Connexion

Connexion à distance avec l'option -h pour host 172.25.3.70 -p port 5432 -U utilisateur postgres -d database postgres

1 postgres@gally:~$ psql -h 172.25.3.70 -p 5432 -U postgres -d postgres
2 Mot de passe pour l utilisateur postgres : 
3 psql (9.4.5, serveur 9.4.6)
4 Connexion SSL (protocole : TLSv1.2, chiffrement : ECDHE-RSA-AES256-GCM-SHA384, bits : 256, compression : désactivé)
5 Saisissez « help » pour laide.
6 
7 postgres=# \l
8 								   Liste des bases de données
9 	 Nom      | Propriétaire | Encodage | Collationnement | Type caract. |    Droits d accès     
10 --------------+--------------+----------+-----------------+--------------+-----------------------
11  postgres     | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | 
12  template0    | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
13 			  |              |          |                 |              | postgres=CTc/postgres
14  template1    | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
15 			  |              |          |                 |              | postgres=CTc/postgres
16 (3 lignes)

Créer un cluster de base de données


Nota benne

Il peut être nécessaire de créer un cluster de base de données.
Avec certaines distributions (CentOS, Debian, Windows), un cluster est créé par défaut à l’installation des paquets.
Si vous êtes dans un autre cas de figure, il vous faudra donc en créer un.
Pour cela, utilisez la commande :

1 initdb

Creer une base

Ici création d’une base en local sur ma machine avec un alias UNIX

1 postgres@gally:~$ createdb jarvis

C'est une commande SQL qui est en fait lancée :

SQL « CREATE DATABASE »


Connexion à jarvis

simplement avec psql suivi du nom de la base

1 >~ psql jarvis
2 psql (9.4.5)
3 Saisissez « help » pour l aide.
4 
5 jarvis=> \l
6 								  Liste des bases de données
7 	Nom    | Propriétaire | Encodage | Collationnement | Type caract. |    Droits d accès     
8 -----------+--------------+----------+-----------------+--------------+-----------------------
9  jarvis    | xtbushido    | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | 
10  postgres  | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | 
11  template0 | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
12 		   |              |          |                 |              | postgres=CTc/postgres
13  template1 | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
14 		   |              |          |                 |              | postgres=CTc/postgres
15 (4 lignes)

Création d'une base test2

sur le serveur distant 'tpsql'

1 postgres=# CREATE DATABASE test2 ENCODING 'UTF8';
2 CREATE DATABASE
3 postgres=# \c test2
4 psql (9.5.1, serveur 9.4.6)
5 Vous êtes maintenant connecté à la base de données « test2 » en tant qu utilisateur « postgres ».
6 test2=# 

Importation

Il est possible d'importer une base de données avec un script d'installation, il y a plusieurs fichiers en réalité.
Pour cela on l'envoie avec SSH

1 scp /home/user/downloads/InstallationBD_02.sql	myuser@192.168.8.102:/home/myuser/InstallationBD_02.sql
2 
3 myuser@192.168.8.102 s password: 
4 InstallationBD_02.sql		100% 6885     6.7KB/s   00:00 

Puis on importe avec l'option -i

1 myuser@172.25.3.70:~$ su - postgres
2 postgres@172.25.3.70:~$ psql -U postgres -d postgres
3 postgres=> \i /home/postgres/InstallationBD_02.sql

Connexion commande \c

1 postgres=# \c centralivres 
2 psql (9.4.5, serveur 9.4.6)
3 Connexion SSL (protocole : TLSv1.2, chiffrement : ECDHE-RSA-AES256-GCM-SHA384, bits : 256, compression : désactivé)
4 Vous êtes maintenant connecté à la base de données « centralivres » en tant qu utilisateur « postgres ».
5 centralivres=# \d
6 					   Liste des relations
7  Schéma |              Nom              |   Type   | Propriétaire 
8 --------+-------------------------------+----------+--------------
9  public | auteurs                       | table    | xtbushido
10  public | collections                   | table    | xtbushido
11  public | distinctions                  | table    | xtbushido
12  public | ecrit_par                     | table    | xtbushido
13  public | editions                      | table    | xtbushido
14  public | entrepose                     | table    | xtbushido
15  public | entrepots                     | table    | xtbushido
16  public | imprime                       | table    | xtbushido
17  public | imprimeurs                    | table    | xtbushido
18  public | imprimeurs_code_imprimeur_seq | séquence | xtbushido
19  public | livres                        | table    | xtbushido
20  public | recompense_par                | table    | xtbushido
21 (12 lignes)
22 
23 centralivres=# 

Créer un rôle

Avec postgresql les utilisateurs et les groupes sont gérés sous formes de rôles.
Lors de la création l'argument LOGIN définit que le rôle peut se connecter, logique le login définit la session

1 postgres@gally:~$ psql
2 psql (9.4.5)
3 Saisissez « help » pour l aide.
4 
5 postgres=# CREATE ROLE odoo WITH CREATEDB LOGIN ENCRYPTED PASSWORD 'mot2passe';
6 CREATE ROLE

Droit du rôle


Propriétaire

1 postgres=# ALTER DATABASE dbname OWNER TO user_dbname;
2 ALTER DATABASE

Créateur

1 postgres=# ALTER ROLE username CREATEDB;
2 ALTER ROLE

Relancer postgres

Lister

Je liste les ROLES avec \du sur tpsql

1 postgres=# \du
2 										  Liste des rôles
3  Nom du rôle |                                Attributs                                 | Membre de 
4 -------------+--------------------------------------------------------------------------+-----------
5  postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Bypass RLS | {}
6  tsgeri      | 5 connexions                                                             | {}
7  mon_user    | 5 connexions   

Je trouve un utilisateur tsgeri, je lui fais la chasse, tout le monde utilise le même login, je vais donc le tacler .

Création de groupe

Groupe admingroup

1 postgres=# CREATE ROLE admingroup ROLE mon_user;
2 CREATE ROLE
3 postgres=# \du
4 											Liste des rôles
5  Nom du rôle |                                Attributs                                 |  Membre de   
6 -------------+--------------------------------------------------------------------------+--------------
7  admingroup  | Ne peut pas se connecter                                                 | {}
8  postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Bypass RLS | {}
9  tsgeri      | 5 connexions                                                             | {}
10  mon_user    | 5 connexions                                                             | {admingroup}
11 
12 postgres=# 

Groupe et heritage

1 postgres=# CREATE ROLE stef LOGIN PASSWORD 'XXXX' INHERIT IN ROLE admingroup;

Privilèges du groupe

1 postgres=# CREATE ROLE sandrine LOGIN PASSWORD 'XXXX' IN ROLE admingroup;

Altérer un profil

J'interdis à tsgeri de se connecter

1 postgres=# ALTER ROLE tsgeri NOLOGIN;
2 ALTER ROLE
3 postgres=#

Résultat
Pour l'instant je cherche à connaître les droits du groupe admingroup.

1 postgres=# \du
2 											Liste des rôles
3  Nom du rôle |                                Attributs                                 |  Membre de   
4 -------------+--------------------------------------------------------------------------+--------------
5  admingroup  | Ne peut pas se connecter                                                 | {}
6  postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Bypass RLS | {}
7  sandrine    |                                                                          | {admingroup}
8  stef        |                                                                          | {admingroup}
9  tsgeri      | Ne peut pas se connecter                                                +| {}
10 			 | 5 connexions                                                             | 
11  mon_user    | Superutilisateur                                                        +| {admingroup}
12 			 | 5 connexions                                                             | 

Liste des options d'attribut

1 SUPERUSER
2 NOSUPERUSER
3 CREATEDB
4 NOCREATEDB
5 CREATEROLE
6 NOCREATEROLE
7 INHERIT
8 NOINHERIT
9 LOGIN
10 NOLOGIN

Types de sauvegardes

En utilisateur système UNIX postgres

pg_dump

Dumper une seule base

1 >~ pg_dump jarvis > /home/username/backup/jarvis

Restauration
1 >~ psql dbname < infile

A distance

En pipant le fichier vers psql vers un autre serveur sur lequel existe aupréalable une base du même nom.

1 >~ pg_dump jarvis | psql -h 172.25.3.70 jarvis
1 postgres@gally:~$ pg_dump jarvis | psql -h 172.25.3.70 jarvis
2 Mot de passe : 
3 SET
4 SET
5 SET
6 SET
7 SET
8 SET
9 CREATE EXTENSION
10 COMMENT
11 SET
12 SET
13 SET
14 CREATE TABLE
15 ALTER TABLE
16 COPY 0
17 REVOKE
18 REVOKE
19 GRANT
20 GRANT

Resultat

1 centralivres=# \c jarvis
2 psql (9.5.1, serveur 9.4.6)
3 Vous êtes maintenant connecté à la base de données « jarvis » en tant qu utilisateur « postgres ».
4 jarvis=#

pg_dumpall

C'est un dump complet de toutes les bases.
Le dump sera enregistrée dans le répertoire par défault : /var/lib/postgres en protégeant tout les droits, données etc, etc.

1 postgres@tpsql:~$ pg_dumpall > pg_global.sql

Restauration

Puisque nous souhaitons restaurer nos bases dans la version du serveur postgresql 9.5 ; il faut se connecter sur un autre socket UNIX, le port 5433, postgressql change simplement de port.

1 postgres@tpsql:~$ psql -p 5433
2 psql (9.5.1)
3 Saisissez « help » pour l'aide.
4 
5 postgres=# \i pg_global.sql

Résultat

1 postgres@tpsql:~$ psql -p 5433
2 psql (9.5.1)
3 Saisissez « help » pour l'aide.
4 
5 postgres=# \l
6 								   Liste des bases de données
7 	 Nom      | Propriétaire | Encodage | Collationnement | Type caract. |    Droits d'accès     
8 --------------+--------------+----------+-----------------+--------------+-----------------------
9  centralivres | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | postgres=CTc/postgres+
10 			  |              |          |                 |              | =CTc/postgres
11  postgres     | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | 
12  template0    | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
13 			  |              |          |                 |              | postgres=CTc/postgres
14  template1    | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | postgres=CTc/postgres+
15 			  |              |          |                 |              | =c/postgres
16  test2        | xtbushido    | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | 
17 (5 lignes)

Aprés une restauration, il est préconisé d’analyser les bases.

1 postgres@tpsql:~$ vacuumdb -a -z
2 vacuumdb : exécution de VACUUM sur la base de données « centralivres »
3 vacuumdb : exécution de VACUUM sur la base de données « postgres »
4 vacuumdb : exécution de VACUUM sur la base de données « template1 »
5 vacuumdb : exécution de VACUUM sur la base de données « test2 »

On-line backup and point-in-time recovery (PITR)

postgresql ecrit le WAL = write ahead log dans le repertoire pg_xlog/ du répertoire de data du cluster, cela sert par sécurité en cas de crash, en cas de problème le serveur va relire les fichiers de log antérieur au moment du crash.

Il faut a nouveau modifier /ets/postgres/postgres.conf

SSL

Utilisation des fichiers.

1 Fichier 								Contenu 				Effet
2 ssl_cert_file ($PGDATA/server.crt) 		certificat du serveur 	envoyé au client pour indiquer 
3 																l identité du serveur
4 ssl_key_file ($PGDATA/server.key) 		clé privée du serveur 	prouve que le certificat serveur 
5 																est envoyé par son propriétaire  
6 																n indique pas que le propriétaire 
7 																du certificat est de confiance
8 ssl_ca_file ($PGDATA/root.crt) 			autorités de confiance pour les certificats 
9 																vérifie le certificat du client ; 
10 																vérifie que le certificat du client 
11 																est signé par une autorité de confiance
12 ssl_crl_file ($PGDATA/root.crl) 		certificats révoqués par les autorités de confiance 	
13 										le certificat du client ne doit pas être sur cette liste 

psql


Le manpages!!

Les manpages sont également accessible avec un bon vieux man psql

1 PSQL(1)                 PostgreSQL 9.4.5 Documentation                 PSQL(1)
2 
3 
4 
5 NAME
6 	   psql - PostgreSQL interactive terminal
7 
8 SYNOPSIS
9 	   psql [option...] [dbname [username]]
10 
11 DESCRIPTION
12 	   psql is a terminal-based front-end to PostgreSQL. It enables you to
13 	   type in queries interactively, issue them to PostgreSQL, and see the
14 	   query results. Alternatively, input can be from a file. In addition, it
15 	   provides a number of meta-commands and various shell-like features to
16 	   facilitate writing scripts and automating a wide variety of tasks.
17 
18 OPTIONS
19 	   -a
20 	   --echo-all
21 		   Print all nonempty input lines to standard output as they are read.
22 		   (This does not apply to lines read interactively.) This is
23 		   equivalent to setting the variable ECHO to all.
24 
25 	   -A
26 	   --no-align
27 		   Switches to unaligned output mode. (The default output mode is
28 		   otherwise aligned.)
29 
30 	   -c command
31 	   --command=command
32 		   Specifies that psql is to execute one command string, command, and
33 		   then exit. This is useful in shell scripts. Start-up files (psqlrc
34 		   and ~/.psqlrc) are ignored with this option.
35 
36 
37 		   command must be either a command string that is completely parsable
38 		   by the server (i.e., it contains no psql-specific features), or a
39 		   single backslash command. Thus you cannot mix SQL and psql
40 		   meta-commands with this option. To achieve that, you could pipe the
41 		   string into psql, for example: echo '\x \\ SELECT * FROM foo;' |
42 		   psql. (\\ is the separator meta-command.)

La commande \?

Très complet , l'aide est découpé en section

Général

1 Général
2   \copyright           affiche les conditions d utilisation et de
3 					   distribution de PostgreSQL
4   \g [FICHIER] ou ;    envoie le tampon de requêtes au serveur (et les
5 					   résultats au fichier ou |tube)
6   \gset [PRÉFIXE]    exécute la requête et stocke les résultats dans des variables psql
7   \q                   quitte psql
8   \watch [SEC]           exécute la requête toutes les SEC secondes

Help

1 Help
2   \? [commands]          show help on backslash commands
3   \? options             show help on psql command-line options
4   \? variables           show help on special variables
5   \h [NOM]             aide-mémoire pour les commandes SQL, * pour toutes
6 					   les commandes

Tampon de requête

1 Tampon de requête
2   \e [FICHIER] [LIGNE] édite le tampon de requête ou le fichier avec un
3 						éditeur externe
4   \ef [FONCTION [LIGNE]] édite la définition de fonction avec un éditeur
5 						externe
6   \p                   affiche le contenu du tampon de requête
7   \r                   efface le tampon de requêtes
8   \s [FICHIER]         affiche l historique ou le sauvegarde dans un
9 					   fichier
10   \w [FICHIER]         écrit le contenu du tampon de requêtes dans un
11 					   fichier

Entrée / sortie

1 Entrée/Sortie
2   \copy ...            exécute SQL COPY avec le flux de données dirigé vers
3 					   l hôte client
4   \echo [TEXTE]        écrit un texte sur la sortie standard
5   \i FICHIER           exécute les commandes du fichier
6   \ir FICHIER         identique à \i, mais relatif à l emplacement du script
7 					   ou un |tube
8   \o [FICHIER]         envoie les résultats de la requête vers un fichier
9 					   ou un |tube
10   \qecho [TEXTE]       écrit un texte sur la sortie des résultats des
11 					   requêtes (voir \o)

Information

1 Informations
2   (options : S = affiche les objets systèmes, + = informations supplémentaires)
3   \d[S+]               affiche la liste des tables, vues et séquences
4   \d[S+] NOM           affiche la description de la table, de la vue,
5 					   de la séquence ou de l index
6   \da[S] [MODÈLE]      affiche les aggrégats
7   \db[+] [MODÈLE]      affiche la liste des tablespaces
8   \dc[S+] [MODÈLE]     affiche la liste des conversions
9   \dC[+] [MODÈLE]      affiche la liste des transtypages
10   \dd[S] [MODÈLE]      affiche les commentaires des objets dont le commentaire
11 						n est affiché nul part ailleurs
12   \ddp   [MODÈLE]      affiche les droits par défaut
13   \dD[S+] [MODÈLE]     affiche la liste des domaines
14   \det[+] [MODÈLE]     affiche la liste des tables distantes
15   \des[+] [MODÈLE]     affiche la liste des serveurs distants
16   \deu[+] [MODÈLE]     affiche la liste des correspondances utilisateurs
17   \dew[+] [MODÈLE]     affiche la liste des wrappers de données distantes
18   \df[antw][S+] [PATRN] affiche la liste des fonctions
19 						[seulement agg/normal/trigger/window]
20   \dF[+] [MODÈLE]      affiche la liste des configurations de la recherche
21 						plein texte
22   \dFd[+] [MODÈLE]     affiche la liste des dictionnaires de la recherche de
23 						texte
24   \dFp[+] [MODÈLE]        affiche la liste des analyseurs de la recherche de
25 					   texte
26   \dFt[+] [MODÈLE]     affiche la liste des modèles de la recherche de
27 						texte
28   \dg[+]  [MODÈLE]     affiche la liste des rôles
29   \di[S+] [MODÈLE]     affiche la liste des index
30   \dl                  affiche la liste des « Large Objects », identique à
31 						\lo_list
32   \dL[S+] [MODÈLE]     affiche la liste des langages procéduraux
33   \dm[S+] [MODÈLE]     affiche la liste des vues matérialisées
34   \dn[S+]  [MODÈLE]    affiche la liste des schémas
35   \do[S]  [MODÈLE]     affiche la liste des opérateurs
36   \dO[S+] [MODÈLE]     affiche la liste des collationnements
37   \dp     [MODÈLE]     affiche la liste des droits d accès aux tables,
38 						vues, séquences
39   \drds [MODEL1 [MODEL2]] liste la configuration utilisateur par base de                           données
40   \ds[S+] [MODÈLE]     affiche la liste des séquences
41   \dt[S+] [MODÈLE]     affiche la liste des tables
42   \dT[S+] [MODÈLE]     affiche la liste des types de données
43   \du[+]  [MODÈLE]     affiche la liste des rôles (utilisateurs)
44   \dv[S+] [MODÈLE]     affiche la liste des vues
45   \dE[S+] [MODÈLE]     affiche la liste des tables distantes
46   \dx[+] [MODÈLE]      affiche la liste des extensions
47   \dy   [MODÈLE]      affiche les triggers sur évènement
48   \l[+] [MODÈLE]     affiche la liste des bases de données
49   \sf [FONCTION]       édite la définition d une fonction
50   \z      [MODÈLE]     identique à \dp

Formatage

1 Formatage
2   \a                   bascule entre les modes de sortie alignée et non
3 						alignée
4   \C [CHAÎNE]          initialise le titre d une table, ou le désactive en
5 						l absence d argument
6   \f [CHAÎNE]          affiche ou initialise le séparateur de champ pour
7 						une sortie non alignée des requêtes
8   \H                   bascule le mode de sortie HTML (actuellement désactivé)
9   \pset [NAME [VALUE]]   set table output option
10 						 (NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|
11 						 numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|
12 						 unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})
13   \t                   affiche uniquement les lignes (actuellement désactivé)
14   \T [CHAÎNE]          initialise les attributs HTML de la balise <table>,
15 						ou l annule en l absence d argument
16   \x [on|off|auto]     bascule l affichage étendu (actuellement désactivé)

Connexion

1 Connexions
2   \c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
3 						 connect to new database (currently "postgres")
4   \encoding [ENCODAGE] affiche ou initialise l encodage du client
5   \password [UTILISATEUR]
6 						modifie de façon sécurisé le mot de passe d un
7 						utilisateur
8   \conninfo            affiche des informations sur la connexion en cours

Système d'exploitation

1 Système d exploitation
2   \cd [RÉPERTOIRE]     change de répertoire de travail
3   \setenv NOM [VALEUR] (dés)initialise une variable d environnement
4   \timing [on|off]     bascule l activation du chronométrage des commandes
5 						(actuellement désactivé)
6   \! [COMMANDE]        exécute la commande dans un shell ou exécute un
7 						shell interactif

Variables

1 Variables
2   \prompt [TEXTE] NOM  demande à l utilisateur de configurer la variable
3 						interne
4   \set [NOM [VALEUR]]  initialise une variable interne ou les affiche
5 						toutes en l absence de paramètre
6   \unset NOM           désactive (supprime) la variable interne
7 
8 « Large objects »
9   \lo_export OIDLOB FICHIER
10   \lo_import FICHIER [COMMENTAIRE]
11   \lo_list
12   \lo_unlink OIDLOB
13 						opérations sur les « Large Objects »

Options de connexion

D’autres options peuvent être utilisées pour ouvrir une connexion à un serveur ; par exemple le nom d’hôte ou le nom d’utilisateur :