Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| postgresql [Le 31/08/2022, 23:14] – correction tirets doubles (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) moths-art | postgresql [Le 04/05/2026, 13:43] (Version actuelle) – [Guide de survie pour le client psql] liste les dates de création des bases de données bcag2 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | {{tag> |
| ---- | ---- | ||
| Ligne 121: | Ligne 121: | ||
| ^ \c nom_base nom_utilisateur | connecte à la base < | ^ \c nom_base nom_utilisateur | connecte à la base < | ||
| ^ \lt | liste les tables de la base courante| | ^ \lt | liste les tables de la base courante| | ||
| - | ^ set search_path to < | + | ^ set search_path to mon_schema1, |
| - | ^ \d | liste les tables du schéma courant| | + | ^ \d | liste les tables du ou des schéma·s courant·s| |
| ^ \d nom_table_ou_vue | description de la table < | ^ \d nom_table_ou_vue | description de la table < | ||
| ^ \d+ nom_table_ou_vue | description complète (avec commentaires!) de la table < | ^ \d+ nom_table_ou_vue | description complète (avec commentaires!) de la table < | ||
| Ligne 128: | Ligne 128: | ||
| ^ \dn | liste tout le schéma de la base courante| | ^ \dn | liste tout le schéma de la base courante| | ||
| ^ \h ALTER TABLE | affiche l'aide pour la commande ALTER TABLE| | ^ \h ALTER TABLE | affiche l'aide pour la commande ALTER TABLE| | ||
| + | |||
| + | Pour lister les schémas : | ||
| + | <code sql> | ||
| + | select *from pg_namespace; | ||
| + | </ | ||
| Pour lister les tables d'un schéma : | Pour lister les tables d'un schéma : | ||
| Ligne 151: | Ligne 156: | ||
| ORDER BY routines.routine_name, | ORDER BY routines.routine_name, | ||
| </ | </ | ||
| + | |||
| + | Lister les droits (//\du// est très limité !) : | ||
| + | < | ||
| + | select grantee, table_catalog, | ||
| + | </ | ||
| + | |||
| + | et si besoin : | ||
| + | <code sql> | ||
| + | REVOKE ALL ON SCHEMA mon_schema FROM mon_role; | ||
| + | </ | ||
| + | |||
| + | Lister les clés étrangères de la table //matable// dans // | ||
| + | <code sql> | ||
| + | SELECT | ||
| + | tc.table_schema, | ||
| + | tc.constraint_name, | ||
| + | tc.table_name, | ||
| + | kcu.column_name, | ||
| + | ccu.table_schema AS foreign_table_schema, | ||
| + | ccu.table_name AS foreign_table_name, | ||
| + | ccu.column_name AS foreign_column_name | ||
| + | FROM information_schema.table_constraints AS tc | ||
| + | JOIN information_schema.key_column_usage AS kcu | ||
| + | ON tc.constraint_name = kcu.constraint_name | ||
| + | AND tc.table_schema = kcu.table_schema | ||
| + | JOIN information_schema.constraint_column_usage AS ccu | ||
| + | ON ccu.constraint_name = tc.constraint_name | ||
| + | WHERE tc.constraint_type = ' | ||
| + | AND tc.table_schema=' | ||
| + | AND tc.table_name=' | ||
| + | </ | ||
| + | |||
| + | Lister les dates de création des bases de données : | ||
| + | <code sql> | ||
| + | SELECT (pg_stat_file(' | ||
| + | -- Source - https:// | ||
| + | </ | ||
| + | |||
| ====Supprimer l' | ====Supprimer l' | ||
| La suppression de l' | La suppression de l' | ||
| Ligne 195: | Ligne 238: | ||
| ... | ... | ||
| </ | </ | ||
| - | Puis redémarrez le serveur PostgreSQL: | + | Puis redémarrez le serveur PostgreSQL: |
| < | < | ||
| $ sudo service postgresql restart | $ sudo service postgresql restart | ||
| Ligne 211: | Ligne 254: | ||
| sudo pg_createcluster 9.3 main | sudo pg_createcluster 9.3 main | ||
| </ | </ | ||
| - | Puis redémarrez le serveur PostgreSQL: | + | Puis redémarrez le serveur PostgreSQL: |
| < | < | ||
| $ sudo service postgresql restart | $ sudo service postgresql restart | ||
| Ligne 217: | Ligne 260: | ||
| Vous pouvez maintenant reprendre le tutoriel au début de la section " | Vous pouvez maintenant reprendre le tutoriel au début de la section " | ||
| ==== encodage UTF-8 ==== | ==== encodage UTF-8 ==== | ||
| - | <note tips> Ce paragraphe est optionnel </ | + | Postgresql se base sur la configuration du système d'exploitation… |
| - | FIXME En version PostgreSQL 9.1.5, l' | + | |
| - | + | ||
| - | L'installateur initialise le cluster postgresql avec le support de jeux de caractères SQL_ASCII | + | |
| - | + | ||
| - | Pour ceux qui souhaitent privilégier l' | + | |
| - | + | ||
| - | === jeux de caractères | + | |
| - | * Connexion en tant qu'utilisateur postgres | + | |
| - | + | ||
| - | sudo -i -u postgres | + | |
| - | + | ||
| - | psql -l | + | |
| - | List of databases | + | |
| - | Name | Owner | Encoding | + | |
| - | ----------+----------+-----------+---------+-------+----------------------- | + | |
| - | postgres | + | |
| - | template0 | postgres | SQL_ASCII | C | C | =c/ | + | |
| - | | | | + | |
| - | template1 | postgres | SQL_ASCII | C | C | =c/ | + | |
| - | | | | + | |
| - | + | ||
| - | === supprimer le cluster et le recréer === | + | |
| - | + | ||
| - | * Identifier la version et le nom de votre cluster | + | |
| - | < | + | |
| - | $ pg_lsclusters | + | |
| - | Version Cluster | + | |
| - | 9.1 | + | |
| - | </ | + | |
| - | * Supprimer le cluster | + | |
| - | + | ||
| - | pg_dropcluster 9.1 main --stop | + | |
| - | + | ||
| - | * Créer le cluster | + | |
| - | + | ||
| - | pg_createcluster --locale fr_FR.UTF-8 9.1 main | + | |
| - | + | ||
| - | * Démarrage | + | |
| - | + | ||
| - | pg_ctlcluster 9.1 main start | + | |
| - | + | ||
| - | Les bases systèmes seront alors conformes aux locales système | + | |
| - | < | + | |
| - | $ psql -l | + | |
| - | List of databases | + | |
| - | Name | Owner | Encoding | | + | |
| - | ----------+----------+----------+-------------+-------------+----------------------- | + | |
| - | postgres | + | |
| - | template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/ | + | |
| - | | | | | + | |
| - | template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/ | + | |
| - | | | | | + | |
| - | </ | + | |
| ==== Créer un utilisateur PostgreSQL ==== | ==== Créer un utilisateur PostgreSQL ==== | ||
| Ligne 314: | Ligne 303: | ||
| </ | </ | ||
| - | La ligne de commande est devenue : | + | La ligne de commande est devenue : |
| < | < | ||
| nom_base_de_donnee=> | nom_base_de_donnee=> | ||
| Ligne 334: | Ligne 323: | ||
| Il faut d' | Il faut d' | ||
| - | < | + | < |
| sudo nano / | sudo nano / | ||
| </ | </ | ||
| Ligne 344: | Ligne 333: | ||
| <note important> | <note important> | ||
| - | Modifier le fichier en remplaçant **ident sameuser** par **md5** afin d' | + | Modifier le fichier en remplaçant **ident sameuser** par **md5** afin d' |
| - | < | + | < |
| ... | ... | ||
| # Database administrative login by Unix domain socket | # Database administrative login by Unix domain socket | ||
| Ligne 364: | Ligne 353: | ||
| La modification des paramètres de connexion au serveur nécessite son redémarrage pour que ces derniers soient pris en compte. | La modification des paramètres de connexion au serveur nécessite son redémarrage pour que ces derniers soient pris en compte. | ||
| - | < | + | < |
| $ sudo service postgresql restart | $ sudo service postgresql restart | ||
| </ | </ | ||
| ou | ou | ||
| - | < | + | < |
| $ sudo pg_ctlcluster 9.5 main restart | $ sudo pg_ctlcluster 9.5 main restart | ||
| </ | </ | ||
| Ligne 374: | Ligne 363: | ||
| On peut ensuite créer notre utilisateur : | On peut ensuite créer notre utilisateur : | ||
| - | < | + | < |
| $ sudo -i -u postgres | $ sudo -i -u postgres | ||
| $ createuser -P --interactive < | $ createuser -P --interactive < | ||
| Ligne 385: | Ligne 374: | ||
| Puis, on lui crée une base de données dédiée : | Puis, on lui crée une base de données dédiée : | ||
| - | < | + | < |
| $ createdb -O < | $ createdb -O < | ||
| </ | </ | ||
| Ligne 394: | Ligne 383: | ||
| L' | L' | ||
| </ | </ | ||
| - | |||
| Ensuite, on peut se connecter via : | Ensuite, on peut se connecter via : | ||
| - | < | + | < |
| $ psql -U < | $ psql -U < | ||
| - | Mot de passe pour l'utilisateur < | + | Mot de passe pour l’utilisateur < |
| </ | </ | ||
| - | ou, si le nom de la base de l' | + | ou, si le nom de la base de l' |
| - | < | + | < |
| $ psql -U < | $ psql -U < | ||
| - | Mot de passe pour l'utilisateur < | + | Mot de passe pour l’utilisateur < |
| </ | </ | ||
| Ligne 413: | Ligne 401: | ||
| == Les variables d' | == Les variables d' | ||
| Les [[http:// | Les [[http:// | ||
| - | Les plus intéressantes à utiliser son PGUSER et PGHOST (notamment pour cette dernière si vous administrez une base qui n'est pas sur un serveur // | + | Les plus intéressantes à utiliser son //PGUSER// et //PGHOST// (notamment pour cette dernière si vous administrez une base qui n'est pas sur un serveur // |
| Pour que ces variables soient systématiquement disponibles dans votre shell de commandes, il faut les ajouter dans le fichier ~/.profile correspondant à votre utilisateur. | Pour que ces variables soient systématiquement disponibles dans votre shell de commandes, il faut les ajouter dans le fichier ~/.profile correspondant à votre utilisateur. | ||
| - | Les lignes à ajouter sont (à vous de défionir | + | Les lignes à ajouter sont (à vous de définir |
| + | <code bash> | ||
| export PGHOST=< | export PGHOST=< | ||
| export PGUSER=< | export PGUSER=< | ||
| ... | ... | ||
| - | + | </ | |
| - | La variable PGUSER étant ainsi définie, votre connexion peut alors se résumer à | + | |
| + | La variable | ||
| + | <code bash> | ||
| psql < | psql < | ||
| + | </ | ||
| et si vous définissez PGDATABASE, votre connexion express sera simplement | et si vous définissez PGDATABASE, votre connexion express sera simplement | ||
| + | <code bash> | ||
| psql | psql | ||
| + | </ | ||
| < | < | ||
| il faut toujours saisir le mot de passe correspondant à l' | il faut toujours saisir le mot de passe correspondant à l' | ||
| </ | </ | ||
| - | |||
| == Le fichier .pgpass == | == Le fichier .pgpass == | ||
| Ligne 436: | Ligne 429: | ||
| Ce fichier n' | Ce fichier n' | ||
| nano ~/.pgpass | nano ~/.pgpass | ||
| - | Son contenu est simplement défini par les chaînes de connexions à utiliser. | + | Son contenu est simplement défini par les chaînes de connexions à utiliser. |
| localhost: | localhost: | ||
| Ceci indiquera à votre client psql que l' | Ceci indiquera à votre client psql que l' | ||
| Ligne 443: | Ligne 436: | ||
| Et la sécurité ? | Et la sécurité ? | ||
| si vous tentez une connexion | si vous tentez une connexion | ||
| + | <code bash> | ||
| psql < | psql < | ||
| + | |||
| WARNING: password file "/ | WARNING: password file "/ | ||
| + | </ | ||
| La limitation des droits d' | La limitation des droits d' | ||
| + | <code bash> | ||
| chmod 0600 ~/.pgpass. | chmod 0600 ~/.pgpass. | ||
| + | </ | ||
| === Personnalisation === | === Personnalisation === | ||
| Ligne 461: | Ligne 458: | ||
| Ces quelques paramètres doivent suffire dans la majorité des cas. Si vous souhaitez aller plus loin dans le tuning de PostgreSQL, je vous conseille d' | Ces quelques paramètres doivent suffire dans la majorité des cas. Si vous souhaitez aller plus loin dans le tuning de PostgreSQL, je vous conseille d' | ||
| - | |||
| - | |||
| === Rôles et droits === | === Rôles et droits === | ||
| Ligne 485: | Ligne 480: | ||
| Différentes contributions sont disponibles (cf la [[http:// | Différentes contributions sont disponibles (cf la [[http:// | ||
| - | < | + | < |
| sudo apt-get install postgresql-contrib | sudo apt-get install postgresql-contrib | ||
| Les paquets supplémentaires suivants seront installés : | Les paquets supplémentaires suivants seront installés : | ||
| Ligne 493: | Ligne 488: | ||
| Les scripts permettant l' | Les scripts permettant l' | ||
| L' | L' | ||
| - | < | + | < |
| $ psql -U < | $ psql -U < | ||
| </ | </ | ||
| Ligne 500: | Ligne 495: | ||
| Pour ne permettre seulement une consultation des données par un utilisateur sans droit de modification, | Pour ne permettre seulement une consultation des données par un utilisateur sans droit de modification, | ||
| - | < | + | < |
| ALTER USER < | ALTER USER < | ||
| </ | </ | ||
| Ligne 527: | Ligne 522: | ||
| PgAdmin III est un outil graphique d' | PgAdmin III est un outil graphique d' | ||
| - | PgAdmin III a été conçu pour répondre aux besoins de tous les utilisateurs, | + | PgAdmin III a été conçu pour répondre aux besoins de tous les utilisateurs, |
| == Installation du client pgadmin3 == | == Installation du client pgadmin3 == | ||
| Ligne 536: | Ligne 531: | ||
| Cela va également installer les paquets suivants : | Cela va également installer les paquets suivants : | ||
| * libpq4 | * libpq4 | ||
| - | * libwxbase2.6-0 | + | * libwxbase2.6-0 |
| * libwxgtk2.6-0 | * libwxgtk2.6-0 | ||
| * pgadmin3-data | * pgadmin3-data | ||
| Ligne 546: | Ligne 541: | ||
| == Lancement du client pgadmin3 == | == Lancement du client pgadmin3 == | ||
| - | Sous Ubuntu, pour lancer PgAdmin III, aller dans le menu **Applications** => **programmation** => **pgAdmin III** | + | Sous Ubuntu, pour lancer PgAdmin III, aller dans le menu **Applications** => **programmation** => **pgAdmin III** |
| < | < | ||
| Ligne 617: | Ligne 612: | ||
| ====Pool de connexion : PgBouncer==== | ====Pool de connexion : PgBouncer==== | ||
| [[pgbouncer|PgBouncer]] | [[pgbouncer|PgBouncer]] | ||
| - | ===== Récupération du contenu d'une base de données | + | ===== Sauvegarde et Restauration ===== |
| + | Il est conseillé de lire le support de [[# | ||
| + | On pourra lire aussi [[https:// | ||
| + | |||
| + | ==== PgDump ==== | ||
| + | Cette commande dispose de nombreuses options, cf. [[https:// | ||
| + | Quelques exemples classiques : | ||
| + | <code bash> | ||
| + | # une sauvegarde simple va se faire par : | ||
| + | pg_dump -f dump-de-ma-base.sql ma_base | ||
| + | # si on ne veut que le schéma (le schéma par défaut est le schéma nommé public) : | ||
| + | pg_dump ma_base --schema-only --schema mon_schema -f ~/dump-de-mon-schema.sql | ||
| + | # et de façon similaire, que les données : | ||
| + | pg_dump ma_base --data-only --schema mon_schema -f ~/ | ||
| + | # et pour ne sauver qu'une table : | ||
| + | pg_dump ma_base --table ma_table --schema mon_schema -f ~/ | ||
| + | </ | ||
| + | ==== pgBackRest ==== | ||
| + | Le site officiel [[https:// | ||
| + | |||
| + | === Installation | ||
| + | Simplement | ||
| + | <code bash> | ||
| + | sudo apt install pgbackrest | ||
| + | </ | ||
| + | ==== Récupération du contenu d'une base de données après un crash serveur ==== | ||
| Supposons que vous ayez installé sous [[ubuntu_server|ubuntu server]] une application d' | Supposons que vous ayez installé sous [[ubuntu_server|ubuntu server]] une application d' | ||
| * Monter votre ancienne installation depuis une autre installation ou via un live cd | * Monter votre ancienne installation depuis une autre installation ou via un live cd | ||
| Ligne 680: | Ligne 700: | ||
| ===== Voir aussi ===== | ===== Voir aussi ===== | ||
| * [[https:// | * [[https:// | ||
| + | * (en) [[https:// | ||
| ---- | ---- | ||
| // | // | ||
