initdb

Nom

initdb -- crée un nouveau groupe de bases de données PostgreSQL

Synopsis

initdb [option...] --pgdata | -D répertoire

Description

initdb crée un nouveau groupe de bases de données PostgreSQL. Un groupe de bases de données est un ensemble de bases de données gérées par une seule instance du serveur.

Créer un groupe de bases de données consiste en la création des répertoires dans lesquels sont stockées les données de la base de données, en la génération des tables partagées du catalogue (tables appartenant à tout le groupe plutôt qu'à une base de données particulière) et en la création de la base de données template1. Lorsque vous créerez plus tard une nouvelle base de données, tout ce qui se trouve dans la base de données template1 est copié. Elle contient les tables catalogues remplies avec certains éléments comme les types internes.

Bien qu'initdb tentera de créer le répertoire de données spécifié, il pourrait ne pas en avoir le droit si le répertoire parent du répertoire de données désiré appartient à root. Pour initialiser dans une telle configuration, créer un répertoire de données vide en tant que root, puis utilisez chown pour modifier son propriétaire avec le compte de l'utilisateur de la base de données. Enfin, utilisez su pour devenir l'utilisateur de la base de données et pouvoir ainsi exécuter initdb.

initdb doit être exécuté en tant que l'utilisateur possédant le processus serveur parce que le serveur a besoin d'avoir accès aux fichiers et répertoires qu'initdb crée. Comme le serveur ne peut pas être exécuté en tant que root, vous ne devez pas non plus lancer initdb en tant que root. (En fait, il refuse de le faire.)

initdb initialise la locale et le codage de l'ensemble de caractères par défaut du groupe de bases de données. L'ordre de tri (LC_COLLATE) et les classes d'ensembles de caractères (LC_CTYPE, c'est-à-dire upper (majuscule), lower (minuscule), digit (chiffres)) sont fixes pour toutes les bases de données et ne peuvent pas être modifiées. Les ordres de tri autres que C ou POSIX sont aussi moins performantes. 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 plus tard lors du lancement du serveur. Toutes les valeurs de locales (lc_*) peuvent être affichées via SHOW ALL. Vous trouverez plus de détails dans Section 20.1.

Le codage de l'ensemble de caractères peut être configuré séparément pour une base de données lors de sa création. initdb détermine le codage pour la base de données template1, qui sert de valeur par défaut pour les autres bases de données. Pour modifier le codage par défaut, utilisez l'option --encoding. Plus de détails est disponible dans Section 20.2.

Options

-A méthode_auth
--auth=méthode_auth

Cette option spécifie la méthode d'authentification pour les utilisateurs locaux dans pg_hba.conf. Ne pas utiliser trust sauf si vous avez confiance dans tous les utilisateurs locaux de votre système. Trust est la valeur par défaut pour faciliter l'installation.

-D répertoire
--pgdata=répertoire

Cette option spécifie le répertoire où le groupe de bases de données doit être stocké. Ceci est la seule information requise par initdb mais vous pouvez éviter de l'écrire en configurant la variable d'environnement PGDATA, proposition plus intéressante car le serveur de la base de données (postmaster) peut ensuite trouver le répertoire par cette même variable.

-E codage
--encoding=codage

Sélectionne le codage de la base de données template. Ceci est aussi considéré comme le codage par défaut de toutes les bases de données créées ultérieurement sauf si vous le surchargez. La valeur par défaut est dérivée de la locale ou est SQL_ASCII si l'autre possibilité ne fonctionne pas. Les ensembles de caractères supportés par le serveur PostgreSQL sont décrits dans Section 20.2.1.

--locale=locale

Configure la locale par défaut pour le groupe de bases de données. Si cette option n'est pas spécifiée, la locale est héritée de l'environnement d'exécution d'initdb. Le support des locales est décrit dans Section 20.1.

--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale

Comme --locale, mais configure uniquement la locale dans la catégorie spécifiée.

-U nomutilisateur
--username=nomutilisateur

Sélectionne le nom de l'utilisateur qui sera le superutilisateur de la base de données. Il a par défaut le nom de l'utilisateur lançant initdb. Le nom du superutilisateur n'est pas vraiment important mais vous pourriez souhaiter conserver le nom de postgres même si le nom de l'utilisateur du système est différent.

-W
--pwprompt

Force initdb à demander un mot de passe pour le superutilisateur de la base de données. Si vous ne pensez pas utiliser d'authentification par mot de passe, ceci n'est pas important. Sinon, vous ne pourrez pas utiliser l'authentification par mot de passe tant que vous n'aurez pas configuré un mot de passe pour le surperutilisateur.

--pwfile=nomfichier

Fait en sorte qu'initdb lise le mot de passe du superutilisateur à partir d'un fichier. La première ligne du ficher est le mot de passe.

D'autres paramètres, moins utilisés, sont disponibles :

-d
--debug

Affiche les informations de débogage du serveur de démarrage et quelques autres messages de moindre intérêt pour le public général. Le serveur de démarrage est le programme qu'initdb lance pour créer les tables catalogues. Cette option génère une quantité énorme de messages ennuyeux.

-L répertoire

Spécifie où initdb doit trouver les fichiers d'entrée pour initialiser le groupe de données. Ceci n'est normalement pas nécessaire. Vous serez prévenu si vous avez besoin de spécifier leur emplacement de façon explicite.

-n
--noclean

Par défaut, quand initdb détermine qu'une erreur l'empêche de créer complètement le groupe de bases de données, il supprime tous les fichiers qu'il a créés avant de se rendre compte qu'il ne peut pas finir son travail. Cette option désactive le nettoyage et est donc utile pour le débogage.

Environnement

PGDATA

Spécifie le répertoire où le groupe de bases de données doit être stocké ; peut être surchargé en utilisant l'option -D.

Voir aussi

postgres, postmaster