Création d'une base "template" de données spatiale
La création d'une base de données n'est pas possible à partir de DBManager sous QGIS.
Nous avons abordé rapidement la création d'une base de données précédemment. Nous retenons que le propriétaire par défaut est le créateur de la base.
Vous remarquerez que la création d'une base de données nécessite l'installation de l'extension PostGIS ensuite lorsque l'on travaille sur les bases de données géographiques.
Ceci ne peut se faire qu'en SUPERUSER. Il est donc intéressant de pouvoir créer un "template" déjà calibré, pour servir de modèle à la création des bases de données futures, utilisable par les administrateurs non SUPERUSER.
Ceci évite deux choses :
la création des extensions nécessaires sur les nouvelles bases de données,
l'utilisation du SUPERUSER, qui est à utiliser uniquement lorsqu'il est indispensable.
Complément :
Collation : permet de préciser les fonctionnalités de régionalisation (ou localisation). Pour en savoir plus...
Nous avons utilisé la fois précédente la possibilité de créer une base sans lui appliquer de modèle particulier. Il existe, selon les installations de PostgreSQL /PostGIS, des bases d'exemple / modèles / templates telles que template_sig (qui ne sont pas utilisées dans cette formation, car cette base peut varier d'une version et d'un environnement exploitation différents). C'est une bonne pratique d'utiliser une base template propre comme modèle de création avec toutes les extensions nécessaires.
Méthode : Pas à pas : création d'une base "template"
Voyons comment créer une base 'template' au cas ou elle n'aurait pas été créée lors de l'installation de PostgreSQL / PostGIS.
Avec le compte postgres (superuser), créer une nouvelle base template_stageXX (remplacer XX par votre numéro).
(le propriétaire est postgres)
Faire un clic droit sur Bases de données
et créer
une base de données
(nous reviendrons plus tard sur les paramètres de création des bases de données).
Remplir l'onglet Propriétés comme indiqué ci-contre en spécifiant le groupe d'administrateurs adminXX comme propriétaire (remplacer le 00 par votre numéro de stagiaire).
Remplir l'onglet Définition comme indiqué ci-contre.
Vérifier que l'on a bien dans l'onglet SQL :
CREATE DATABASE template_stageXX
WITH
OWNER = admin00
TEMPLATE = postgres
ENCODING = 'UTF8'
CONNECTION LIMIT = -1;
puis valider.
Méthode : Créer l'extension PostGIS
A l'aide du requêteur SQL vu précédemment, créer l'extension PostGIS en lançant la commande suivante (attention à bien créer l'extension dans la base formation nouvellement créée) :
CREATE EXTENSION "postgis";
lancer la requête avec le bouton
Vous devriez voir apparaître un message ressemblant à :
CREATE EXTENSION
Requête exécutée avec succès en 1 s 71 msec.
Constater que :
une table spatial_ref_sys a été créée dans le schéma public
deux vues ont été créées (dont geometry_columns)
des fonctions ont été ajoutées.
Vérifier que l'extension est bien installée en exécutant l'ordre SQL suivant :
SELECT PostGIS_full_version();
La réponse doit être quelque chose comme :
POSTGIS="3.0.2 3.0.2" [EXTENSION] PGSQL="120" GEOS="3.8.1-CAPI-1.13.3" PROJ="Rel. 5.2.0, September 15th, 2018" LIBXML="2.9.9" LIBJSON="0.12" LIBPROTOBUF="1.2.1" WAGYU="0.4.3 (Internal)"
Il est important de connaître la version de PostGIS installée, car certains problèmes sont parfois résolus dans des versions ultérieures. Voir par exemple : http://postgis.net/docs/release_notes.html
(de même avec les versions de gdal).
Remarque :
Les droits pour le rôle public sur la table spatial_sys_ref et les vues PostGIS peuvent être positionnés dans le template, ce qui permettra de ne pas avoir à les modifier pour chaque nouvelle base créée.
On fera attention que le propriétaire de spatial_sys_ref est le rôle avec lequel on a créée l'extension postgis (ici postgres).
Exemple :
Fondamental : Création de base template en SUPERUSER
La base de données a été créée en superuser au profit des administrateurs, car la création des extensions n'est possible qu'en SUPERUSER.
Nous pouvons désormais utiliser le template comme modèle pour créer des bases de données de travail avec les rôles d'administrateurs sans faire appel au superuser.
Se connecter en administrateur
L'administrateur étant créé, il faut simplement se déconnecter de la base de données et se reconnecter en stage00.
Par un clic droit sur le nom du serveur de base de données, cliquer sur Propriétés, puis renseigner le nouvel utilisateur stage00 dans l'onglet Connexion.
Après avoir appliqué les changements, une reconnexion au serveur est nécessaire.
Par un clic droit sur le nom du serveur de base de données, cliquer sur Déconnecter le serveur.
Se reconnecter au serveur, qui demande alors le mot de passe pour se connecter en tant que stage00, qui est un administrateur non SUPERUSER.