Vous êtes sur la page 1sur 6

Chapitre 2

tude/Atelier
Administration de PostgreSQL
I Prsentation
Cette squence va permettre de manipuler les outils et les commandes principales pour ladministration
des bases de donnes. PostgreSQL fournit un certain nombre de commandes externes que nous avons dj
commenc aborder (createdb, createuser. . .). Elles sont l pour des questions de facilit et peuvent tre utilises
mais nous ne reviendrons pas dessus. Rfrez-vous aux pages de manuel pour le dtail sur ces commandes.
SQL fournit des instructions permettant laffectation des permissions et des mots de passe pour les utili-
sateurs. Enn PostgreSQL fournit galement des mthodes daccs qui permettent de dnir les autorisations
daccs.
Cette activit a pour but de dcouvrir ces aspects. Vous pourrez vous rfrer au chapitre Administration
du serveur de la documentation.
II Le catalogue systme
Le catalogue systme est lensemble de tables dans lequel un moteur de base de donnes stocke toutes
les mtadonnes. Le catalogue systme de PostgreSQL sont de simples tables. Il est prudent de ne pas modier
ces tables, par contre il est frquent de les utiliser. Voici quelques unes de ces tables :
pg_attribute, colonnes des tables
pg_attrdef, valeurs par dfaut des colonnes
pg_database, bases de donnes de linstallation PostgreSQL
pg_description, descriptions ou commentaires des objets de base de donnes
pg_index, informations supplmentaires des index
pg_proc, fonctions et procdures
pg_trigger, dclencheurs
pg_type, types de donnes
Elles sont toutes dcrites dans la documentation de PostgreSQL.
11
III. 3. Cration des bases de donnes
III 3. Cration des bases de donnes
Les bases de donnes sont cres avec la commande CREATE DATABASE et dtruites avec la commande
DROP DATABASE. Il est possible de connatre les bases de donnes partir du catalogue de PostgreSQL :
SELECT datname FROM pg_database;
Les bases de donnes sont cres avec les commandes CREATE DATABASE ou createdb. CREATE DATA-
BASE fonctionne en copiant la base de donnes modle template1. Cest template1 qui est utilise par dfaut.
Si vous ajoutez des objets template1, ces objets seront copis dans les bases de donnes utilisateurs cres
ultrieurement. Il y a une seconde base de donnes systme standard appele template0 qui ne devrait pas tre
modie. Elle permet de crer des base vierges. Il est possible de crer autant de bases de donnes modles
que lon souhaite et les utiliser pour la cration des bases.
CREATE DATABASE nom_base TEMPLATE template0;
createdb -T template0 nom_base
Les bases de donnes sont supprimes avec les commandes DROP DATABASE nombase ou dropdb nom-
base.
IV Cration des rles
PostgreSQL utilise des rles pour la gestion des comptes daccs aux bases. Un rle peut tre assimil un
compte de base de donnes. Par contre ils sont indpendants des comptes systmes.
Pour pouvoir se logguer un rle doit avoir t cr avec loption LOGIN. Cela revient utiliser la com-
mande CREATE USER qui utilise par dfaut loption LOGIN.
CREATE USER nom
CREATE ROLE nom LOGIN
On peut donner la possibilit un rle de crer dautres rles ou de crer des bases de donnes :
CREATE ROLE nom CREATEDB
CREATE ROLE role nom CREATEROLE
On peut galement crer des comptes DBA ou super utilisateurs, mais il nest pas trop conseill dutiliser ce
type de compte car aucun contrle nest ralis par le systme sur les commandes passes.
CREATE ROLE nom SUPERUSER
Pour affecter un mot de passe un rle, on utilisera PASSWORD :
CREATE ROLE nom PASSWORD "IciLeMotDePasse"
Les rles peuvent tre modis avec la commande alter role. Il peuvent tre galement utiliss pour crer
des groupes.
12
V. Les droits sur les objets
V Les droits sur les objets
Une fois un objet cr, comme une base de donne ou une table, il faut accorder des droits daccs un
compte sur cet objet.
Il existe diffrents droits : SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE,
TEMPORARY, EXECUTE et USAGE. Les droits sont crs laide de la commande GRANT.
GRANT SELECT ON objet TO role
GRANT ALL ON objet TO role
ALL applique tous les droits sur objet pour le rle role.
On supprime les droits avec REVOKE.
VI Authentication du client
Lauthentication est le processus par lequel le serveur de bases va dterminer lidentit du client et
autoriser ou non laccs une base. PostgreSQL offre plusieurs mthodes dauthentication qui peuvent tenir
compte de ladresse de la machine partir de laquelle la connexion est ralise, du compte qui se connecte (il
peut reprsenter une personne ou une application) et de la base de donne sur laquelle la requte est pass.
Ces paramtres sont dnis dans le chier pg_hba.conf. Les enregistrements peuvent avoir une des struc-
tures suivantes :
local database user auth-method [auth-option]
host database user CIDR-address auth-method [auth-option]
hostssl database user CIDR-address auth-method [auth-option]
hostnossl database user CIDR-address auth-method [auth-option]
host database user IP-address IP-mask auth-method [auth-option]
hostssl database user IP-address IP-mask auth-method [auth-option]
hostnossl database user IP-address IP-mask auth-method [auth-option]
Toutes les paramtres sont dcrits dans le chapitre Administration du serveur/Authentication du client. Le
contenu est repris et rsum ici.
local Cet enregistrement intercepte les tentatives de connexion utilisant les sockets du domaine Unix.
Sans un enregistrement de ce type, les connexions de sockets du domaine Unix ne sont pas autorises.
host Cet enregistrement intercepte les tentatives de connexion utilisant les rseaux TCP/IP. Les lignes
host enregistrent des tentatives de connexion soit SSL soit non SSL.
hostssl Cet enregistrement intercepte les tentatives de connexions utilisant TCP/IP mais seulement
quand ces connexions utilisent le chiffrement SSL.
hostnossl Cet enregistrement a une logique oppose hostssl. Celui-ci nintercepte que les tentatives de
connexion nutilisant pas SSL.
database Indique quels noms de bases de donnes lenregistrement concerne. La valeur all indique quil
concerne toutes les bases de donnes. La valeur sameuser spcie que lenregistrement nintercepte que
si la base de donnes demande a le mme nom que lutilisateur demand. La valeur samerole spcie
que lutilisateur demand doit tre membre du rle portant le mme nom que la base de donnes
demande.
user Indique quels utilisateurs ou groupe de la base de donnes cet enregistrement correspond. La
valeur all indique quil concerne tous les utilisateurs.
13
VI. Authentication du client
CIDR-address Spcie les adresses IP du client auquel correspond cet enregistrement. Ce champ ne
concerne que les enregistrements host, hostssl et hostnossl.
IP-address IP-mask Ces champs pourraient tre utiliss comme alternative la notation CIDR-address.
Ces champs ne concernent que les enregistrements host, hostssl et hostnossl.
auth-method Dtermine la mthode dauthentication utiliser lors dune connexion via cet enregistre-
ment. Les choix possibles sont les suivants :
trust Autorise la connexion sans condition. Cette mthode permet nimporte qui de se connecter
au serveur de bases de donnes PostgreSQL, de senregistrer comme nimporte quel utilisateur Post-
greSQL de son choix sans ncessiter de mot de passe.
reject Rejette la connexion sans condition.
md5 Demande au client de fournir un mot de passe chiffr MD5 pour son authentication.
password Requiert que le client fournisse un mot de passe non chiffr pour lauthentication. Comme
le mot de passe est envoy en clair sur le rseau, ceci ne doit pas tre utilis sur des rseaux non srs.
krb5 Utilise Kerberos V5 pour authentier lutilisateur. Ceci nest disponible que pour les connexions
TCP/IP.
ident Rcupre le nom de lutilisateur du systme dexploitation du client (pour les connexions
TCP/IP en contactant le serveur didentication sur le client, pour les connexions locales, en lob-
tenant du systme dexploitation) et vrie si lutilisateur est autoris se connecter en tant quuti-
lisateur de la base de donnes demande en consultant la correspondance indique aprs le mot cl
ident.
pam Authentie en utilisant les Pluggable Authentication Modules (PAM) fournis par le systme
dexploitation.
auth-option La signication de ce champ optionnel dpend de la mthode dauthentication choisie.
Les enregistrements du chier pg_hba.conf sont examins squentiellement pour chaque tentative de
connexion. Il est donc important de faire attention lordre ds enregistrements. On met gnralement les
enregistrements les plus restrictifs en premier.
Le chier pg_hba.conf est lu au dmarrage du serveur, il est donc important de faire relire le chier par le
serveur si vous modiez le chier. Extrait du chier pg_hba.conf tir de la documentation de PostgreSQL :
# Permet nimporte quel utilisateur du systme local de se connecter la base
# de donnes sous nimporte quel nom dutilisateur de la base de donnes en
# utilisant les sockets du domaine Unix. (par dfaut pour les connexions locales)
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust
# Identique ci-dessus mais utilise les connexions TCP/IP locales loopback.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 127.0.0.1/32 trust
# Identique la dernire ligne mais en utilisant une colonne netmask spare CDIR.
#
# TYPE DATABASE USER IP-ADDRESS IP-mask METHOD
host all all 127.0.0.1 255.255.255.255 trust
# Permet nimporte que utilisateur de nimporte quel hte avec ladresse IP
# 192.168.93.x de se connecter la base de donnes "postgres" sous le mme nom
# dutilisateur que lidentification le signale la connexion (gnralement le
14
VII. Sauvegardes et restaurations de bases
# nom utilisateur Unix).
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host postgres all 192.168.93.0/24 ident sameuser
# Permet un utilisateur de lhte 192.168.12.10 de se connecter la base de
# donnes "postgres" si le mot de passe de lutilisateur est fourni sans
# erreur.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host postgres all 192.168.12.10/32 md5
# En labsence de lignes "host" antrieures, ces deux lignes rejetteront toutes
# les connexions en provenance de 192.168.54.1 (puisque cette entre se dclenchera
# en premier), mais autorisera les connexions Kerberos 5 de nimporte o
# ailleurs sur lInternet. Le masque zro signifie quaucun bit sur lip de
# lhte nest considr, de sorte correspondre tous les htes.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.54.1/32 reject
host all all 0.0.0.0/0 krb5
Souvenez vous que les rgles sont lues squentiellement, il est donc important de faire attention lordre.
On dnit en gnral les autorisations, puis on interdit tout le reste.
VII Sauvegardes et restaurations de bases
Il existe plusieurs techniques de sauvegardes et de restaurations de bases de donnes. Nous allons en
voir une.
pg_dump base > fichier_en_sortie
et pour restaurer
psql base < fichier_en_entree
pg_dump comporte plusieurs options, dont certaines par exemple permettent de ne sauvegarder que les
donnes, ou donnes ET structure de la base. La commande pg_dumpall, permet de sauvegarder toutes les
bases de donnes.
VIII Application
Les exercices ci-dessous doivent juste vous permettre de manipuler un peu ce qui a t vu ci-dessus car
nous en aurons besoin pour la suite.
Crez un rle pour un compte "foo" et affectez-lui un mot de passe.
Crez une base de donnes "basefoo" avec une seule table et quelques donnes sous le compte DBA
postgres et donnez toutes les permissions au compte "foo".
15
VIII. Application
Affectez toutes les permissions sur cette base pour le compte "foo".
Vriez que le compte "foo" peut bien se connecter, raliser des select sur la table cre, ajouter des
lignes, crer une autre table.
Modifer le chier pg_hba.conf an que le compte "foo" puisse se connecter avec la commande psql sur
la base mais partir dune autre machine mise en rseau. Notez les modications apportes au chier
pg_hba.conf et la commande psql utilise pour se connecter.
Ralisez une sauvegarde complte de la base de donnes. Consultez le chier gnr. Vriez que vous
avez bien la structure des tables et les donnes. Notez la commande utilise.
Crez une deuxime base de donnes "backupfoo". Restaurez les tables et les donnes sur cette base.
Vriez que les tables et les donnes ont bien t restaures.
16