initdb
initdb — Créer un nouveau « cluster »
Synopsis
initdb [
option
...] [--pgdata ] | [-D
]
répertoire
Description
initdb
crée une
nouvelle grappe de bases de données, ou « cluster »,
PostgreSQL™. Un cluster est
un ensemble de bases de données gérées par une même instance du
serveur.
Créer un cluster consiste à :
-
créer les répertoires dans lesquels sont stockées les données
de la base ;
-
créer les tables partagées du catalogue (tables partagées par
tout le cluster) ;
-
créer les bases de données template1
et postgres.
Lors de la création ultérieure d'une base de données, tout ce qui
se trouve dans la base template1 est
copié. (Ce qui implique que tout ce qui est installé dans
template1 est automatiquement copié dans
chaque base de données créée par la suite.) La base de données
postgres est une base de données par
défaut à destination des utilisateurs, des outils et des
applications tiers.
initdb
tente de créer
le répertoire de données indiqué. Il se peut que la commande n'est
pas les droits nécessaires si le répertoire parent du répertoire de
données indiqué est possédé par root. Dans ce cas, pour réussir
l'initialisation, il faut créer un répertoire de données vide en
tant que root, puis utiliser
chown
pour en donner la
possession au compte utilisateur de la base de données.
su
peut alors être
utilisé pour prendre l'identité de l'utilisateur de la base de
données et exécuter
initdb
.
initdb
doit être
exécuté par l'utilisateur propriétaire du processus serveur parce
que le serveur doit avoir accès aux fichiers et répertoires créés
par
initdb
. Comme le
serveur ne peut pas être exécuté en tant que root, il est impératif
de ne pas lancer
initdb
en tant que root. (En
fait,
initdb
refuse
de se lancer dans ces conditions.)
initdb
initialise la
locale et l'encodage par défaut du cluster. L'ordre de tri
(LC_COLLATE) et les classes de jeux de
caractères (LC_CTYPE, c'est-à-dire
majuscule (
upper
), minuscule (
lower
),
chiffre (
digit
)) sont fixées pour l'ensemble des
bases de données et ne peuvent pas être modifiées. Les ordres de
tri autres que C ou POSIX sont également moins performants. Pour ces
raisons, il est important de choisir la bonne locale lors de
l'exécution d'
initdb
.
Les catégories de locale restantes peuvent être modifiées par la
suite, serveur démarré. Toutes les valeurs de locales du serveur
(lc_*) peuvent être affichées à l'aide de
l'instruction
SHOW
ALL
. Plus de détails sont disponibles dans
Section 21.1, « Support
des locales ».
L'encodage d'une base de données peut être configuré à sa création.
initdb
détermine
l'encodage de la base de données template1, qui sert de modèle par défaut pour les
autres bases de données. Cet encodage par défaut peut être modifié
avec l'option --encoding. De plus amples
détails sont présentés dans Section 21.2,
« Support des jeux de caractères ».
Options
-
-A
méthode_auth
,
--auth=
méthode_auth
-
Précise la méthode d'authentification utilisée dans
pg_hba.conf pour les utilisateurs
locaux. trust ne doit être utilisé
que lorsque tous les utilisateurs locaux du système sont
dignes de confiance. Pour faciliter l'installation,
trust est la valeur par défaut.
-
-D
répertoire
,
--pgdata=
répertoire
-
Indique le répertoire de stockage du cluster. C'est la seule
information requise par
initdb
. Il est possible
d'éviter de préciser cette option en configurant la variable
d'environnement PGDATA. Cela permet,
de plus, au serveur de bases de données (
postgres
) de trouver le
répertoire par cette même variable.
-
-E
codage
,
--encoding=
codage
-
Définit l'encodage de la base de données modèle (
template
). C'est également
l'encodage par défaut des bases de données créées
ultérieurement. Cette valeur peut toutefois être surchargée.
La valeur par défaut est déduite de la locale. Dans le cas où
cela n'est pas possible, SQL_ASCII
est utilisé. Les jeux de caractères supportés par le serveur
PostgreSQL™ sont
décrits dans Section 21.2.1,
« Jeux de caractères supportés ».
-
--locale=
locale
-
Configure la locale par défaut pour le cluster. Si cette
option n'est pas précisée, la locale est héritée de
l'environnement d'exécution d'
initdb
. Le support des
locales est décrit dans Section 21.1,
« Support des locales ».
-
--lc-collate=
locale
,
--lc-ctype=
locale
,
--lc-messages=
locale
,
--lc-monetary=
locale
,
--lc-numeric=
locale
,
--lc-time=
locale
-
Même principe que --locale, mais
seule la locale de la catégorie considérée est configurée.
-
-U
nomutilisateur
,
--username=
nomutilisateur
-
Précise le nom de l'utilisateur défini comme superutilisateur
de la base de données. Par défaut, c'est le nom de
l'utilisateur qui lance
initdb
. Le nom du
superutilisateur importe peu, mais postgres peut être conservé, même si le nom
de l'utilisateur système diffère.
-
-W,
--pwprompt
-
Force
initdb
à
demander un mot de passe pour le superutilisateur de la base
de données. Cela n'a pas d'importance lorsqu'aucune
authentification par mot de passe n'est envisagée. Dans le
cas contraire, l'authentification par mot de passe n'est pas
utilisable tant qu'un mot de passe pour le superutilisateur
n'est pas défini.
-
--pwfile=
nomfichier
-
Incite
initdb
à
lire le mot de passe du superutilisateur à partir d'un
fichier. La première ligne du fichier est utilisée comme mot
de passe.
D'autres paramètres, moins utilisés, sont disponibles :
-
-d,
--debug
-
Affiche les informations de débogage du processus amorce et
quelques autres messages de moindre intérêt pour le grand
public. Le processus amorce est le programme qu'
initdb
lance pour créer les
tables catalogues. Cette option engendre une quantité
considérable de messages ennuyeux.
-
-L
répertoire
-
Indique à
initdb
où trouver les
fichiers d'entrée nécessaires à l'initialisation du cluster.
En temps normal, cela n'est pas nécessaire. Un message est
affiché lorsque leur emplacement doit être indiqué de manière
explicite.
-
-n,
--noclean
-
Par défaut, lorsqu'
initdb
rencontre une erreur
qui l'empêche de finaliser la création du cluster, la
commande supprime tous les fichiers créés avant l'erreur.
Cette option désactive le nettoyage. Elle est utile pour le
débogage.
Environnement
-
PGDATA
-
Indique le répertoire de stockage du cluster ; peut être
surchargé avec l'option -D.
Cet outil, comme la plupart des autres outils PostgreSQL™, utilise aussi les variables
d'environnement supportées par la bibliothèque libpq (voir Section 29.12,
« Variables d'environnement »).