18.2. Création d'une base de données

Pour pouvoir créer une base de données, il faut que le serveur PostgreSQL soit lancé (voir la Section 16.3).

Les bases de données sont créées à l'aide de la commande SQL CREATE DATABASE:

     CREATE DATABASE nom;
    

ou nom suit les règles habituelles pour les identifiants SQL. L'utilisateur actuel devient automatiquement le propriétaire de la nouvelle base de données. C'est au propriétaire de la base de données qu'il revient de la supprimer par la suite (ce qui supprime aussi tous les objets qu'elle contient, même s'ils ont un propriétaire différent).

La création de bases de données est une opération protégée. Voir la Section 17.2 sur la manière d'attribuer des droits.

Comme vous devez être connecté au serveur de base de données pour exécuter la commande CREATE DATABASE, reste à savoir comment créer la première base de données d'un site. La première base de données est toujours créée par la commande initdb quand l'aire de stockage des données est initialisée. (Voir la Section 16.2.) Cette base de données est appelée template1. Donc, pour créer la première base de données proprement dite, vous pouvez vous connecter à template1.

Le nom template1 n'a pas été choisi au hasard : quand une nouvelle base de données est créée, la base de donnée modèle template1 est en fait clonée. Cela signifie que tous les changements effectués sur template1 sont propagés à toutes les bases de données créées ultérieurement. Cela implique que vous ne devriez pas utiliser la base de données modèle pour votre travail quotidien mais cette propriété, utilisée judicieusement, peut être utile. Pour plus de détails, voir la Section 18.3.

Pour plus de confort, il existe aussi un programme que vous pouvez exécuter à partir du shell pour créer de nouvelles bases de données, createdb.

     createdb nom_base
    

createdb ne fait rien de magique. Il se connecte à la base de données template1 et exécute la commande CREATE DATABASE, exactement comme ci-dessus. La page de référence sur createdb contient les détails de son invocation. Notez que createdb sans aucun argument crée une base de donnée portant le nom de l'utilisateur courant, ce qui n'est peut-être pas ce que vous voulez.

Note : Le Chapitre 19 contient des informations sur la manière de restreindre l'accès à une base de données.

Parfois vous voulez créer une base de données pour quelqu'un d'autre. Cet utilisateur doit devenir le propriétaire de la nouvelle base de données, afin de pouvoir la configurer et l'administrer lui-même. Pour faire ceci, utilisez l'une des commandes suivantes :

     CREATE DATABASE nom_base OWNER
     nomutilisateur;
    

dans l'environment SQL ou

     createdb -O nomutilisateur nom_base
    

dans le shell. Vous devez être super-utilisateur pour créer une base de données pour quelqu'un d'autre.