Pour pouvoir créer une base de données, il faut que le serveur PostgreSQL soit lancé (voir la Section 18.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 21.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 18.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
.
Une deuxième base de données,
template1
,
est aussi créée durant l'initialisation du cluster 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. Pour plus de détails, voir la Section 22.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 20 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 super-utilisateur 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.