Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
postgresql [Le 01/12/2018, 17:48]
krodelabestiole méthode recommandée : APT, mise à jour EnterpriseDB
postgresql [Le 09/01/2023, 16:21]
bcag2 [Guide de survie pour le client psql]
Ligne 1: Ligne 1:
- 
 {{tag>​sgbd serveur réseau BROUILLON}} {{tag>​sgbd serveur réseau BROUILLON}}
  
Ligne 7: Ligne 6:
  
 ===== Introduction ===== ===== Introduction =====
-PostgreSQL est un système de gestion de bases de données ([[:SGBD]]) très performant sous licence BSD dont les performances sont comparables à Oracle 9.+[[wpfr>PostgreSQL]] est un système de gestion de bases de données ([[:SGBD]]) très performant sous licence BSD dont les performances sont comparables à Oracle 9.
  
  
-Il propose de très nombreuses fonctionnalités,​ tout en respectant les standards SQL : SQL 92, 99 et en partie la norme SQL2003. En outre, il intègre plusieurs langages embarqués (Perl, Python, Java) depuis de nombreuses années. [[http://​www.postgresql.org/​about/​|Pour en savoir plus]]+Il propose de très nombreuses fonctionnalités,​ tout en respectant les standards SQL : SQL 92, 99 et en partie la norme SQL2003. En outre, il intègre plusieurs langages embarqués (Perl, Python, Java) depuis de nombreuses années. [[https://​www.postgresql.org/​about/​|Pour en savoir plus]]
  
 ===== Documentation ===== ===== Documentation =====
  
  
-La documentation ainsi que d'​autres informations sont disponibles sur le [[http://​www.postgresql.org/​|site officiel de PostgreSQL]].+La documentation ainsi que d'​autres informations sont disponibles sur le [[https://​www.postgresql.org/​|site officiel de PostgreSQL]].
 La communauté [[https://​www.postgresql.fr/​|postgresql francophone]] la reprend en [[http://​docs.postgresql.fr/​|français]]. La communauté [[https://​www.postgresql.fr/​|postgresql francophone]] la reprend en [[http://​docs.postgresql.fr/​|français]].
  
Ligne 31: Ligne 30:
  
 Téléchargez le dernier fichier .run sur [[http://​www.enterprisedb.com/​products-services-training/​pgdownload|cette page]] (elle est référencée sur [[https://​www.postgresql.org/​download/​linux/​ubuntu/​|le site officiel]]) - vous aurez probablement besoin de la version //Linux x86-64//. Téléchargez le dernier fichier .run sur [[http://​www.enterprisedb.com/​products-services-training/​pgdownload|cette page]] (elle est référencée sur [[https://​www.postgresql.org/​download/​linux/​ubuntu/​|le site officiel]]) - vous aurez probablement besoin de la version //Linux x86-64//.
-  - rendez le fichier executable : sudo chmod +x postgresql-10.6-1-linux-x64.run +  - rendez le fichier executable : 
-  - puis exécutez-le avec la commande : sudo ./​postgresql-10.6-1-linux-x64.run+<​code>​sudo chmod +x postgresql-10.6-1-linux-x64.run</​code>​ 
 +  - puis exécutez-le ​en tant que [[:​sudo|super utilisateur]] ​avec la commande : 
 +<​code>​sudo ./​postgresql-10.6-1-linux-x64.run</​code>​
  
 Suivez les étapes affichées par l'​interface graphique de l'​installeur. Suivez les étapes affichées par l'​interface graphique de l'​installeur.
Ligne 58: Ligne 59:
 Confirmation de l'​existence d'un dossier **Datas/** déjà existant.\\ Confirmation de l'​existence d'un dossier **Datas/** déjà existant.\\
 Lancer l'​installation. Lancer l'​installation.
-==== L'​utilisateur postgres ====+ 
 +==== Désinstallation ==== 
 +Si vous souhaitez désinstaller,​ par exemple lors du passage à l'​utilisation de conteneurs [[:​docker]],​ il faut : 
 +<code bash> 
 +# arrêtez le service s'il est lancé 
 +sudo systemctl stop postgresql 
 +# lister les paquets installés liés à postgres : 
 +dpkg -l | grep postgres 
 +# et les supprimer : 
 +sudo apt --purge remove postgresql-* 
 +</​code>​ 
 + 
 +===== Configuration ===== 
 +==== L'​utilisateur postgres ​et psql ====
  
 PostgreSQL est un serveur qui permet de se connecter à différentes bases de données. Par défaut, seul l'​utilisateur //​postgres//​ peut se connecter. PostgreSQL est un serveur qui permet de se connecter à différentes bases de données. Par défaut, seul l'​utilisateur //​postgres//​ peut se connecter.
Ligne 80: Ligne 94:
 Vous devriez obtenir quelque chose comme : Vous devriez obtenir quelque chose comme :
 <​code>​ <​code>​
-psql (9.5.10)+psql (13.1-1)
 Type "​help"​ for help. Type "​help"​ for help.
  
Ligne 98: Ligne 112:
 Cette ligne de commande sera bien sûr utilisée pour exécuter des requêtes SQL, et aussi des commandes internes à postgreSQL (elles commencent toutes par un antislash) Cette ligne de commande sera bien sûr utilisée pour exécuter des requêtes SQL, et aussi des commandes internes à postgreSQL (elles commencent toutes par un antislash)
  
-Petit guide de survie pour le client psql+==== Guide de survie pour le client psql ==== 
 +^ \h | pour l'​aide-mémoire des commandes SQL| 
 +^ \? | pour l'​aide-mémoire des commandes psql| 
 +^ \g | ou point-virgule en fin d'​instruction pour exécuter la requête| 
 +^ \q | pour quitter| 
 +^ \l | liste les bases de données existantes| 
 +^ \du | liste les rôles (utilisateur ou groupe)| 
 +^ \c nom_base nom_utilisateur | connecte à la base <​nom_base>​ avec le rôle <​nom_utilisateur>​| 
 +^ \lt | liste les tables de la base courante| 
 +^ set search_path to <​mon_schéma>;​ | intéressant à faire avant la commande ci-dessous !-)| 
 +^ \d | liste les tables du schéma courant| 
 +^ \d nom_table_ou_vue | description de la table <​nom_table>​ (colonne, type…) ou de la vue nom_vue| 
 +^ \d+ nom_table_ou_vue | description complète (avec commentaires!) de la table <​nom_table>​ (colonne, type…) ou de la vue nom_vue avec son code source| 
 +^ \sv nom_vue | à la différence de \d+, n'​affiche que le code source de la vue| 
 +^ \dn | liste tout le schéma de la base courante| 
 +^ \h ALTER TABLE | affiche l'aide pour la commande ALTER TABLE| 
 + 
 +Pour lister les tables d'un schéma : 
 +<code sql> 
 +select t.table_name 
 +from information_schema.tables t 
 +where t.table_schema = '​nom_schema' ​ -- remplacer le nom du schema ici 
 +and t.table_type = 'BASE TABLE'​ 
 +order by t.table_name;​ 
 +</​code>​ 
 + 
 +Lister les vues : 
 +<code sql> 
 +select schemaname, viewname from pg_catalog.pg_views where schemaname NOT IN ('​pg_catalog',​ '​information_schema'​) order by schemaname, viewname; 
 +</​code>​ 
 + 
 +Lister les fonctions d'un schéma (**monSchema** dans l'​exemple ci-dessous, à adapter) ((src: https://​stackoverflow.com/​a/​1347639/​6614155)) : 
 +<code sql> 
 +SELECT routines.routine_name,​ parameters.data_type,​ parameters.ordinal_position 
 +FROM information_schema.routines 
 +    LEFT JOIN information_schema.parameters ON routines.specific_name=parameters.specific_name 
 +WHERE routines.specific_schema='​monSchema'​ 
 +ORDER BY routines.routine_name,​ parameters.ordinal_position;​ 
 +</​code>​ 
 + 
 +Lister les droits (//\du// est très limité !) :
 <​code>​ <​code>​
-        \h pour l'aide-mémoire des commandes SQL +select grantee, table_catalog,​ table_schema,​ table_name, string_agg(privilege_type, ​'' ​order by privilege_type) as privileges from information_schema.role_table_grants where grantee != 'postgres'​ group by grantee, table_catalog,​ table_schema,​ table_name;​ 
-        \? pour l'aide-mémoire des commandes psql +</​code>​ 
-        \g ou point-virgule en fin d'instruction pour exécuter la requête + 
-        \q pour quitter+et si besoin : 
 +<code sql> 
 +REVOKE ALL ON SCHEMA mon_schema FROM mon_role;
 </​code>​ </​code>​
 ====Supprimer l'​utilisateur Postgres du greeter sous xubuntu 14.04.1==== ====Supprimer l'​utilisateur Postgres du greeter sous xubuntu 14.04.1====
 La suppression de l'​utilisateur postgres dans le cas d'un greeter lightdm-webkit-greeter.\\ La suppression de l'​utilisateur postgres dans le cas d'un greeter lightdm-webkit-greeter.\\
 Aller dans le répertoire **/​var/​lib/​AccountsService/​users/​** .\\ Aller dans le répertoire **/​var/​lib/​AccountsService/​users/​** .\\
-Créer un fichier text puis nommé-le **postgres** (nom de l'​utilisateur postgres).\\+Créer un fichier text puis nommez-le **postgres** (nom de l'​utilisateur postgres).\\
 Puis y ajouter le contenu suivant : Puis y ajouter le contenu suivant :
 <​code>​ <​code>​
Ligne 149: Ligne 205:
 ... ...
 </​code>​ </​code>​
-Puis redémarrez le serveur PostgreSQL: ​+Puis redémarrez le serveur PostgreSQL:
 <​code>​ <​code>​
 $ sudo service postgresql restart $ sudo service postgresql restart
Ligne 165: Ligne 221:
 sudo pg_createcluster 9.3 main sudo pg_createcluster 9.3 main
 </​code>​ </​code>​
-Puis redémarrez le serveur PostgreSQL: ​+Puis redémarrez le serveur PostgreSQL:
 <​code>​ <​code>​
 $ sudo service postgresql restart $ sudo service postgresql restart
Ligne 179: Ligne 235:
  
 === jeux de caractères par défaut === === jeux de caractères par défaut ===
-  * Connexion en tant qu'​utilisateur postgres ​+  * Connexion en tant qu'​utilisateur postgres
  
   sudo -i -u postgres   sudo -i -u postgres
Ligne 196: Ligne 252:
  
   * Identifier la version et le nom de votre cluster   * Identifier la version et le nom de votre cluster
-  +<​code>​ 
-  pg_lsclusters ​+pg_lsclusters ​
   Version Cluster ​  Port Status Owner    Data directory ​                    Log file   Version Cluster ​  Port Status Owner    Data directory ​                    Log file
   9.1     ​main ​     5432 online postgres /​var/​lib/​postgresql/​9.1/​main ​      /​var/​log/​postgresql/​postgresql-9.1-main.log   9.1     ​main ​     5432 online postgres /​var/​lib/​postgresql/​9.1/​main ​      /​var/​log/​postgresql/​postgresql-9.1-main.log
 +</​code>​
   * Supprimer le cluster   * Supprimer le cluster
  
Ligne 210: Ligne 266:
  
   * Démarrage   * Démarrage
 +
   pg_ctlcluster 9.1 main start   pg_ctlcluster 9.1 main start
  
 Les bases systèmes seront alors conformes aux locales système Les bases systèmes seront alors conformes aux locales système
-  ​ +<​code>​ 
-  psql -l+psql -l
                                   List of databases                                   List of databases
     Name    |  Owner   | Encoding |   ​Collate ​  ​| ​   Ctype    |   ​Access privileges ​       Name    |  Owner   | Encoding |   ​Collate ​  ​| ​   Ctype    |   ​Access privileges ​  
Ligne 223: Ligne 280:
   template1 | postgres | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/​postgres ​         +   template1 | postgres | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/​postgres ​         +
             |          |          |             ​| ​            | postgres=CTc/​postgres             |          |          |             ​| ​            | postgres=CTc/​postgres
 +</​code>​
  
  
Ligne 234: Ligne 291:
 Par facilité, nous allons assimiler les utilisateurs du système à ceux qui se connecteront avec psql, mais ce n'est nullement obligatoire. Par la suite, nous supposerons que votre login système est ''​nom_utilisateur''​. Par facilité, nous allons assimiler les utilisateurs du système à ceux qui se connecteront avec psql, mais ce n'est nullement obligatoire. Par la suite, nous supposerons que votre login système est ''​nom_utilisateur''​.
  
-Commencez par créer un nouvel utilisateur,​ qui portera par exemple le même nom que vous. Dans la ligne de commande ci-dessous, tapez (rappel : la partie « postgres=# » est l'​invite de commande, il ne faut pas la retaper ! Ainsi, la commande ci-dessous requiert de taper « CREATE ​USER <​nom_utilisateur>;​ », en remplaçant <​nom_utilisateur>​ par un identifiant bien choisi) :+Commencez par créer un nouvel utilisateur,​ qui portera par exemple le même nom que vous. Dans la ligne de commande ci-dessous, tapez (rappel : la partie « postgres=# » est l'​invite de commande, il ne faut pas la retaper ! Ainsi, la commande ci-dessous requiert de taper « CREATE ​ROLE <​nom_utilisateur>;​ », en remplaçant <​nom_utilisateur>​ par un identifiant bien choisi) :
 <​code>​ <​code>​
-postgres=# CREATE ​USER <​nom_utilisateur>;​+postgres=# CREATE ​ROLE <​nom_utilisateur> ​LOGIN;
 </​code>​ </​code>​
 N'​oubliez pas le point-virgule à la fin... N'​oubliez pas le point-virgule à la fin...
Ligne 243: Ligne 300:
 Donnez-lui la possibilité de créer de nouvelles bases de données : Donnez-lui la possibilité de créer de nouvelles bases de données :
 <​code>​ <​code>​
-postgres=# ALTER ROLE <​nom_utilisateur> ​WITH CREATEDB;+postgres=# ALTER ROLE <​nom_utilisateur>​ CREATEDB;
 </​code>​ </​code>​
  
Ligne 258: Ligne 315:
 Attribuer un mot de passe à l'​utilisateur pour qu'il puisse se connecter à la base (le ENCRYPTED permet l'​utilisation de md5 dans le pg_hba.conf) : Attribuer un mot de passe à l'​utilisateur pour qu'il puisse se connecter à la base (le ENCRYPTED permet l'​utilisation de md5 dans le pg_hba.conf) :
 <​code>​ <​code>​
-postgres=# ALTER USER <​nom_utilisateur>​ WITH ENCRYPTED PASSWORD '​mon_mot_de_passe';​+postgres=# ALTER ROLE <​nom_utilisateur>​ WITH ENCRYPTED PASSWORD '​mon_mot_de_passe';​
 </​code>​ </​code>​
  
Ligne 267: Ligne 324:
 </​code>​ </​code>​
  
-La ligne de commande est devenue : +La ligne de commande est devenue :
 <​code>​ <​code>​
 nom_base_de_donnee=>​ nom_base_de_donnee=>​
Ligne 274: Ligne 331:
 Notez la transformation du # en > : vous n'​êtes plus superutilisateur... Notez la transformation du # en > : vous n'​êtes plus superutilisateur...
  
 +<note tip>Il peut être plus simple pour commencer d'​utiliser la commande **createuser --interactive <​nom-utilisateur>​** en ligne de commande (hors psql) qui est interactive et vous demande les autorisations à y associer (LOGIN, SUPERUSER, CREATEDB, CREATEROLE…)</​note>​
  
 ==== Pour aller plus loin ==== ==== Pour aller plus loin ====
Ligne 279: Ligne 337:
 === Méthode alternative pour créer un utilisateur === === Méthode alternative pour créer un utilisateur ===
  
-Vous pouvez aussi créer vos utilisateurs directement en ligne de commande, depuis le terminal standard, ​mais en étant connecté ​en tant que postgres, bien sûr.+Vous pouvez aussi créer vos utilisateurs directement en ligne de commande, depuis le terminal standard. Pour celavous allez d'​abord autoriser les connexions avec mot de passe chiffré, puis vous vous connecterez ​en tant que postgres ​(l'​administrateur par défaut de Postgres) et créerez un nouvel utilisateur.
  
 Cette méthode est beaucoup plus sûre que la précédente. Cette méthode est beaucoup plus sûre que la précédente.
Ligne 285: Ligne 343:
 (Ce qui n'est pas le cas lorsque l'on emploie la méthode précédente) (Ce qui n'est pas le cas lorsque l'on emploie la méthode précédente)
  
-Il faut d'​abord modifier le fichier de configuration pour autoriser les connexions via mot de passe chiffré :+Il faut d'​abord modifier le fichier de configuration pour autoriser les connexions via mot de passe chiffré ​(sur les versions récentes, au moins la 12, ça ne semble pas nécessaires) ​:
 <​code>​ <​code>​
 sudo nano /​etc/​postgresql/​x.x/​main/​pg_hba.conf ​ sudo nano /​etc/​postgresql/​x.x/​main/​pg_hba.conf ​
Ligne 293: Ligne 351:
  
 Les utilisateurs "​avancés"​ noteront que le fichier est amplement commenté. Les utilisateurs "​avancés"​ noteront que le fichier est amplement commenté.
-Voir la [[http://​www.postgresql.org/​docs/​8.2/​static/​index.html|documentation]] pour plus d'​informations.+Voir la [[https://​www.postgresql.org/​docs/​8.2/​static/​index.html|documentation]] pour plus d'​informations.
  
 <note important>​Si vous modifiez les paramètres de la sécurité, avant de relancer postgresql pensez à donner un mot de passe à l'​utilisateur postgres (voir plus bas)</​note>​ <note important>​Si vous modifiez les paramètres de la sécurité, avant de relancer postgresql pensez à donner un mot de passe à l'​utilisateur postgres (voir plus bas)</​note>​
-Modifier le fichier en remplaçant **ident sameuser** par **md5** afin d'​obtenir les lignes suivantes : +Modifier le fichier en remplaçant **ident sameuser** par **md5** afin d'​obtenir les lignes suivantes :
  
 <​code>​ <​code>​
Ligne 354: Ligne 412:
 </​code>​ </​code>​
  
-ou, si le nom de la base de l'​utilisateur n'est pas le même que celui de l'​utilisateur : +ou, si le nom de la base de l'​utilisateur n'est pas le même que celui de l'​utilisateur :
 <​code>​ <​code>​
 $ psql -U <​nom_utilisateur>​ <​nom_database_de_l_utilisateur>​ $ psql -U <​nom_utilisateur>​ <​nom_database_de_l_utilisateur>​
Ligne 373: Ligne 431:
    ...    ...
        
- La variable PGUSER étant ainsi définie, votre connexion peut alors se résumer à + La variable PGUSER étant ainsi définie, votre connexion peut alors se résumer à
   psql <​nom_database>​   psql <​nom_database>​
 et si vous définissez PGDATABASE, votre connexion express sera simplement et si vous définissez PGDATABASE, votre connexion express sera simplement
Ligne 388: Ligne 446:
 Ce fichier n'​existe pas par défaut, il vous faut donc le créer. Ce fichier n'​existe pas par défaut, il vous faut donc le créer.
   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:​5432:​*:​nomutilisateur:​motdepasse ​   localhost:​5432:​*:​nomutilisateur:​motdepasse ​
 Ceci indiquera à votre client psql que l'​utilisateur //​nomutilisateur//​ accompagné du mot de passe //​modepasse//​ est à utiliser pour la connexion à toutes //*// les bases de données de votre serveur //​localhost//​ sur le port //5432// (port standard postgresql). Ceci indiquera à votre client psql que l'​utilisateur //​nomutilisateur//​ accompagné du mot de passe //​modepasse//​ est à utiliser pour la connexion à toutes //*// les bases de données de votre serveur //​localhost//​ sur le port //5432// (port standard postgresql).
Ligne 402: Ligne 460:
  
 === Personnalisation === === Personnalisation ===
-Le tuning d'un serveur postgreSQL se fait grâce au fichier **postgresql.conf** généralement positionné dans **/​etc/​postgresql/​9.1/main/**+Le tuning d'un serveur postgreSQL se fait grâce au fichier **postgresql.conf** généralement positionné dans **/​etc/​postgresql/​X.x/main/**, X.x étant la version utilisée de postgreSQL.
  
 Plusieurs paramètres sont faciles à modifier et peuvent apporter un gain de performance important: Plusieurs paramètres sont faciles à modifier et peuvent apporter un gain de performance important:
Ligne 421: Ligne 479:
 Les droits affectés à ces rôles permet une gestion fine des autorisations d'​accès aux différents objets de la base de données (tables, vues, fonctions, champs...) Les droits affectés à ces rôles permet une gestion fine des autorisations d'​accès aux différents objets de la base de données (tables, vues, fonctions, champs...)
  
-La  [[http://​docs.postgresql.fr/​9.1/​user-manag.html|documentation postgresql]] est explicite à ce sujet, le mieux est de la consulter !+La  [[https://​docs.postgresql.fr/​9.1/​user-manag.html|documentation postgresql]] est explicite à ce sujet, le mieux est de la consulter !
  
 === Gestion des connexions === === Gestion des connexions ===
Ligne 429: Ligne 487:
 La documentation complète est disponible à ces adresses La documentation complète est disponible à ces adresses
  
-//[[http://​docs.postgresql.fr/​9.1/​runtime-config-connection.html|/​etc/​postgresql/​x.x/​main/​postgresql.conf]]//​+//[[https://​docs.postgresql.fr/​9.1/​runtime-config-connection.html|/​etc/​postgresql/​x.x/​main/​postgresql.conf]]//​
  
-//[[http://​docs.postgresql.fr/​9.1/​client-authentication.html|/​etc/​postgresql/​x.x/​main/​pg_hba.conf]]//​+//[[https://​docs.postgresql.fr/​9.1/​client-authentication.html|/​etc/​postgresql/​x.x/​main/​pg_hba.conf]]//​
  
  
Ligne 455: Ligne 513:
 ALTER USER <​nom_utilisateur> ​ set default_transaction_read_only = on; ALTER USER <​nom_utilisateur> ​ set default_transaction_read_only = on;
 </​code>​ </​code>​
- 
- 
- 
- 
- 
- 
- 
- 
  
 ===== Installation de la cartouche spatiale PostGIS ===== ===== Installation de la cartouche spatiale PostGIS =====
-====Ce qu'est postgis==== +Reportez-vous à la page [[:​postgis]]
-[[http://​postgis.refractions.net/​|Postgis]] est une extension de postgresql qui permet ​la gestion d'​objets géographiques. Concrètement la cartouche spatiale postgis ajoute au serveur : +
-  *  la possibilité de définir le type de champ //​geometry//​  +
-  * l'​ensemble des fonctions permettant les traitements géographiques +
-  * la base de référence des projections géographiques //​spatial_ref_sys//​ +
-  * la base de gestion des attributs géographiques des tables //​geometry_columns//​ +
-====Installation==== +
-Installer le paquet le paquet ​[[apt://​postgresql-9.1-postgis|postgresql-9.1-postgis]]+
  
-<​code>​ +===== Clients graphiques =====
-Les paquets supplémentaires suivants seront installés :​  +
-  libgeos-3.2.2 libgeos-c1 libproj0 postgis proj-data +
-</​code>​+
  
-Les scripts nécessaires à la capacitation géographique ​de postgresql sont installé dans le dossier // /​usr/​share/​postgresql/​9.1/​contrib/​postgis-1.5///​+==== DBeaver ==== 
 +Si vous utilisez d'​autres types de base de données, cette solution a l'​avantage de les supporter,​\\ voir la page [[:​dbeaver]]
  
-====Donner à une base la capacité géographique==== 
- 
- 
-<​note>​ 
-Les scripts donnés ci-après prennent pour hypothèse qu'un nouvel utilisateur a été créé avec la méthode [[postgresql#​pour_aller_plus_loin|recommandée]] 
-</​note>​ 
- 
-Tout d'​abord,​ créer la base de données en question 
-  createdb -U <​nom_utilisateur>​ <​nom_base_geo>​ 
-Puis on utilser le rôle postgres (super user postgresql) 
-  $ sudo -i -u postgres ​ 
-pour exécuter dans cet ordre les scripts suivants : 
- 
-  psql -f /​usr/​share/​postgresql/​9.1/​contrib/​postgis-1.5/​postgis.sql ​ <​nom_base_geo>​ 
-  psql -f /​usr/​share/​postgresql/​9.1/​contrib/​postgis-1.5/​spatial_ref_sys.sql ​ <​nom_base_geo>​ 
- 
-puis on quitte le shell postgres 
-  exit 
-  ​ 
-<note tip> 
-Si vous êtes amenés à créer plusieurs bases géographiques,​ il peut être intéressant de créer une base qui serve de modèle, par exemple //​template_postgis//​ 
-Il est ensuite très facile de créer une base géographique en appelant ce modèle lors de la création d'un base 
-  createdb -U <​nom_utilisateur>​ -T template_postgis <​nom_base_geo>​ 
-</​note>​ 
- 
-Pour faire des imports et des exports (car la fonction sur phppgadmin est bancale) : 
- 
-  $ sudo -i -u postgres 
- 
-export : 
-  pg_dump <​nom_de_la_base>​ > nom_de_la_base.pgdump 
- 
-import: 
-  cat  nom_de_la_base.pgdump | psql -d  nom_de_la_base 
- 
-===== Clients graphiques ===== 
  
 +==== Le client pgadmin4 ====
 +Outils web graphique d'​administration de vos bases
 +<code bash>
 +sudo apt install postgresql-common
 +sudo sh /​usr/​share/​postgresql-common/​pgdg/​apt.postgresql.org.sh
 +sudo apt update
 +sudo apt install postgresql-11 pgadmin4
 +</​code>​((source (EN) [[https://​wiki.postgresql.org/​wiki/​Apt]]))
 +puis simplement lancer pgadmin4 via le lanceur qui a été ajouté ou en CLI
  
 ==== Le client pgadmin3 ==== ==== Le client pgadmin3 ====
Ligne 523: Ligne 537:
 PgAdmin III est un outil graphique d'​administration de votre serveur PostgreSQL. L'​application pgAdmin III peut être utilisé pour administrer les serveurs PostgreSQL 7.3 et les versions supérieures. PgAdmin III existe pour toutes les plateformes dont, évidemment,​ Ubuntu, KUbuntu, XUbuntu. PgAdmin III est un outil graphique d'​administration de votre serveur PostgreSQL. L'​application pgAdmin III peut être utilisé pour administrer les serveurs PostgreSQL 7.3 et les versions supérieures. PgAdmin III existe pour toutes les plateformes dont, évidemment,​ Ubuntu, KUbuntu, XUbuntu.
  
-PgAdmin III a été conçu pour répondre aux besoins de tous les utilisateurs,​ depuis la rédaction de simple requêtes SQL au développement complexe de base de données. L'​interface graphique supporte toutes les fonctionnalités de PostGreSQL et permet une administration simple. L'​application inclut aussi un éditeur de requête avec coloration syntaxique, un éditeur de code, un agent de gestion de tâche automatique,​ un support pour les réplication via Slony-I et bien d'​autres fonctionnalités. ​+PgAdmin III a été conçu pour répondre aux besoins de tous les utilisateurs,​ depuis la rédaction de simple requêtes SQL au développement complexe de base de données. L'​interface graphique supporte toutes les fonctionnalités de PostGreSQL et permet une administration simple. L'​application inclut aussi un éditeur de requête avec coloration syntaxique, un éditeur de code, un agent de gestion de tâche automatique,​ un support pour les réplication via Slony-I et bien d'​autres fonctionnalités.
  
 == Installation du client pgadmin3 == == Installation du client pgadmin3 ==
Ligne 532: Ligne 546:
 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 542: Ligne 556:
 == 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**
 <​note>​**Remarque:​** <​note>​**Remarque:​**
  
Ligne 581: Ligne 595:
 | [[apt://​phppgadmin|{{ :apt.png |Installer en 1 clic.}}]] | | [[apt://​phppgadmin|{{ :apt.png |Installer en 1 clic.}}]] |
  
-Réaliser ensuite les opérations suivantes :+Réaliser ensuite les opérations suivantes : FIXME (sous [[bionic]], pas de fichier //​apache.conf//​ mais //​config.inc.php//​ !
 <​code>​ <​code>​
 sudo ln -s /​etc/​phppgadmin/​apache.conf /​etc/​apache2/​conf.d/​phppgadmin.conf sudo ln -s /​etc/​phppgadmin/​apache.conf /​etc/​apache2/​conf.d/​phppgadmin.conf
Ligne 604: Ligne 618:
 ====Connexions vers PHP==== ====Connexions vers PHP====
  
-[[:​tutoriel/​comment_installer_un_paquet|installer|Installer le paquet]] php-pgsql.+[[:​tutoriel/​comment_installer_un_paquet|installer|Installer le paquet]] ​[[apt://php-pgsql|php-pgsql]]
  
 <​note>​Il faut recharger Apache après avoir installé ce module : sudo service apache2 reload</​note>​ <​note>​Il faut recharger Apache après avoir installé ce module : sudo service apache2 reload</​note>​
  
-php5-pdo (voir la documentation officielle pour [[http://​php.net/​pdo|PDO]]) : +Activer ce module 
-<​code>​sudo ​pear install pecl-pdo_pgsql</​code>​ +<​code>​sudo ​phpenmod ​pdo_pgsql</​code>​ 
- +Redémarrer apache2
-PHP 5.2 : cela se fait automatiquement. +
- +
-> FIXME : à compléter. +
 ====Pool de connexion : PgBouncer==== ====Pool de connexion : PgBouncer====
 [[pgbouncer|PgBouncer]] [[pgbouncer|PgBouncer]]
Ligne 670: Ligne 680:
 </​code>​ </​code>​
  
-<note tip>​L'​option ''​--owner=NOM_APPLI''​ de la troisième commande suppose que vous avez configuré un utilisateur système pour votre application</​note>​+<note tip>​L'​option ''​​%%--%%owner=NOM_APPLI''​ de la troisième commande suppose que vous avez configuré un utilisateur système pour votre application</​note>​
  
 ===== Formations ===== ===== Formations =====
 La société Dalibo mets ses support de cours à disposition ([[https://​creativecommons.org/​licenses/​by-nc-sa/​2.0/​fr/​|CC BY NC SA]]):​\\ La société Dalibo mets ses support de cours à disposition ([[https://​creativecommons.org/​licenses/​by-nc-sa/​2.0/​fr/​|CC BY NC SA]]):​\\
-[[https://​www.dalibo.com//​formations]]\\+[[https://​www.dalibo.com/​formations]]\\
 sous l'​intitulé de chaque formation, vous trouvez les liens pour télécharger le support au format [[pdf|PDF]] ou [[epub|EPUB]]\\ sous l'​intitulé de chaque formation, vous trouvez les liens pour télécharger le support au format [[pdf|PDF]] ou [[epub|EPUB]]\\
 exemple: lien directe au support PDF de la formation //DBA1 - PostgreSQL Administration//​ : [[https://​dali.bo/​dba1_pdf]] exemple: lien directe au support PDF de la formation //DBA1 - PostgreSQL Administration//​ : [[https://​dali.bo/​dba1_pdf]]
  
 +===== Voir aussi =====
 +  * [[https://​www.pgmodeler.io|PgModeler]] qui permet de définir le modèle et générer les scripts de mise à jour de la base postgresql, installable depuis les dépôts <code bash>​sudo apt install pgmodeler</​code>​
  
 ---- ----
  
-//​Contributeurs : [[utilisateurs:​yannick_LM|Yannick]],​ [[utilisateurs:​sparky|Sparky]],​ [[utilisateurs:​elemmire|Elemmire]],​ [[utilisateurs:​aldian|Aldian]],​ [[utilisateurs:​fred|Fred]],​[[utilisateurs:​xavierjm|XAVIER_jean-marie]]//+//​Contributeurs : [[utilisateurs:​yannick_LM|Yannick]],​ [[utilisateurs:​sparky|Sparky]],​ [[utilisateurs:​elemmire|Elemmire]],​ [[utilisateurs:​aldian|Aldian]],​ [[utilisateurs:​fred|Fred]],​ [[utilisateurs:​xavierjm|XAVIER_jean-marie]], [[utilisateurs:​bcag2|bcag2]] ​//
  • postgresql.txt
  • Dernière modification: Le 24/09/2024, 14:17
  • par bcag2