Pour pouvoir créer une base de données, il faut que le serveur PostgreSQL soit lancé (voir la Section 19.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. 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 22.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 19.2). 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
.
Deux bases de données supplémentaires,
template1
,
et
template1
,
sont aussi créées durant l'initialisation de l'instance de bases de données.
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. À cause de cela, évitez de
créer des objets dans template1
sauf si vous voulez les
propager à chaque nouvelle base de données créée.
template0
a pour but d'être une copie vierge du contenu
original de template1
. Elle peut être clonée à la place de
template1
quand il est important de créer une base sans
ces ajouts locaux. Pour plus de détails, voir la Section 23.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 postgres
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.
Le Chapitre 21 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. 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 DATABASEnom_base
OWNERnom_role
;
dans l'environment SQL ou
createdb -Onom_role
nom_base
dans le shell. Seul le superutilisateur est autorisé à 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.