19.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,
« Lancer le serveur de bases de données »).
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. Le rôle 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 18.2, « Attributs
des rôles » 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,
« Créer un groupe de base de données »). Cette base de
données est appelée postgres. Donc, pour
créer la première base de données « ordinaire », vous pouvez vous connecter à
postgres.
Une deuxième base de données, template1, est
aussi créée par
initdb
.
Quand une nouvelle base de données est créée à l'intérieur du groupe,
template1 est généralement cloné. Cela
signifie que tous les changements effectués sur template1 sont propagés à toutes les bases de données
créées ultérieurement. Du coup, il est déconseillé d'utiliser
template1 pour votre travail quotidien mais
cette propriété, utilisée judicieusement, peut être utile. Pour plus
de détails, voir la Section 19.3,
« Bases de données modèles ».
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 postgres et exécute la commande
CREATE DATABASE
, exactement comme
ci-dessus. La page de référence sur
createdb(1) 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.
Parfois, vous voulez créer une base de données pour quelqu'un
d'autre. Ce rôle 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 nom_role;
dans l'environment SQL ou
createdb -O nom_role nom_base
dans le shell. Vous devez être super-utilisateur pour créer une base
de données pour quelqu'un d'autre c'est-à-dire pour un rôle dont vous
n'êtes pas membre.