GNU/Linux >> Tutoriels Linux >  >> Panels >> Webmin

Serveur de base de données PostgreSQL

Cette page couvre le serveur de base de données PostgreSQL , et explique comment utiliser Webmin pour gérer les tables, les utilisateurs, les groupes et les données.

Contenu

Introduction à PostgreSQL

Comme le serveur de base de données MySQL, PostgreSQL est un serveur de base de données gratuit qui prend en charge plusieurs bases de données et tables, et permet aux clients de les interroger avec SQL. Il est particulièrement utile pour les programmeurs qui écrivent des applications qui doivent utiliser une base de données pour stocker des informations. Les langages populaires comme Perl, C, Java et PHP ont tous des API pour accéder à une base de données PostgreSQL.

Un serveur PostgreSQL peut héberger plusieurs bases de données et chaque base de données peut contenir plusieurs tables. Une table contient à son tour des champs, chacun ayant un type et une taille. Les tableaux contiennent des enregistrements, chacun contenant généralement des informations sur un objet, tel qu'une personne, un produit ou un achat. Les champs peuvent être considérés comme les colonnes d'un tableau et les enregistrements réels de données comme les lignes. Certains champs peuvent également contenir plusieurs valeurs, comme un tableau.

SQL (qui signifie Structured Query Language) est un langage permettant d'extraire ou de mettre à jour des données dans une base de données. Presque toutes les bases de données utilisent SQL, et sa syntaxe est généralement la même dans tous les différents packages de bases de données, tels qu'Oracle, PostgreSQL et MySQL. Sa syntaxe n'est cependant pas traitée dans ce chapitre.

Les packages pour PostgreSQL sont fournis avec de nombreuses distributions Linux et peuvent être compilés et installés sur presque toutes les variétés d'Unix. Son fonctionnement est le même sur tous les systèmes d'exploitation, ainsi que le module Webmin pour sa gestion.

PostgreSQL se compose d'un processus serveur qui lit et écrit les fichiers de base de données réels et d'un ensemble de programmes clients qui communiquent avec le serveur. La plus couramment utilisée est la commande psql, qui permet à un utilisateur d'exécuter des requêtes SQL et d'afficher les résultats. Aucun des clients n'accède directement aux fichiers de la base de données - cela est entièrement laissé au serveur.

Tous les fichiers de la base de données PostgreSQL sont stockés dans un répertoire tel que /var/lib/pgsql ou /usr/local/pgsql. De plus, il existe plusieurs fichiers texte de configuration qui affectent le fonctionnement du serveur et des clients. Le plus important est pg_hba.conf, qui répertorie les hôtes clients autorisés à se connecter au serveur. C'est le seul fichier que Webmin édite directement - toutes les autres configurations de base de données sont effectuées en se connectant au serveur de base de données, soit directement, soit via la commande psql.

Le module serveur de base de données PostgreSQL

Ce module permet à une administration de gérer des bases de données, des tables, des champs et des enregistrements dans un serveur PostgreSQL. À bien des égards, il est très similaire au module MySQL Database Server. Lorsque vous cliquez sur son icône dans la catégorie Serveurs de Webmin, la page principale affiche une liste des bases de données existantes sur votre système comme le montre cette capture d'écran :


La page principale du module PostgreSQL

Si Webmin détecte que PostgreSQL n'est pas installé, n'a pas été initialisé ou ne peut pas être connecté, la page principale n'apparaîtra pas comme indiqué dans l'image ci-dessus. Au lieu de cela, une sorte de message d'erreur s'affichera. Les plus courants sont couverts dans les prochains paragraphes.

Si le message PostgreSQL n'est pas en cours d'exécution sur votre système apparaît, vous devrez démarrer le serveur de base de données avant que ce module puisse être utilisé pour le gérer. Cliquez simplement sur Démarrer PostgreSQL Server bouton en bas de la page. Si vous voulez qu'il soit démarré au moment du démarrage à partir de maintenant, utilisez le module Bootup and Shutdown (couvert dans Bootup and Shutdown) pour créer une nouvelle action pour le démarrer. Sur la plupart des distributions Linux, les packages PostgreSQL incluent un script d'action de démarrage appelé postgres ou postgresql qui n'est pas activé par défaut.

Si PostgreSQL est exécuté par Webmin ne connaît pas le nom d'utilisateur et le mot de passe d'administration nécessaires pour s'y connecter, et le formulaire *PostgreSQL Login* sera affiché sur la page principale. Vous devez entrer des informations de connexion valides pour votre serveur de base de données, généralement pour l'utilisateur postgres qui a un accès complet à toutes les bases de données et fonctionnalités. La connexion en tant qu'utilisateur avec moins de privilèges peut fonctionner au début, mais vous ne pourrez pas utiliser toutes les fonctionnalités du module. Parfois, PostgreSQL est configuré pour authentifier les utilisateurs par leur nom d'utilisateur Unix, plutôt que par un identifiant et un mot de passe séparés (le mode d'authentification ident). Si tel est le cas sur votre système, vous devrez cocher la case Connect as same Unix user ? case sur le formulaire.

Si un message d'erreur du type Le fichier de configuration de l'hôte PostgreSQL hba.conf introuvable apparaît, soit la configuration du module est incorrecte, soit votre serveur n'a pas encore été initialisé pour la première fois. De nombreuses versions packagées pour les systèmes Linux doivent être initialisées avant de pouvoir être utilisées, généralement en exécutant la commande initdb. Si le module sait comment faire cela sur votre système, une commande Initialize Database s'affichera sur lequel vous pourrez cliquer pour configurer le serveur pour la première fois.

Le message d'erreur Le programme client PostgreSQL *psql n'a pas été trouvé sur votre système* indique que PostgreSQL n'est pas du tout installé, ou qu'il se trouve dans un répertoire différent de celui attendu par Webmin. Sur les systèmes Linux et FreeBSD, le module suppose que vous avez installé les packages pour la base de données inclus avec votre distribution, tandis que sur les autres systèmes d'exploitation, il suppose qu'une installation standard du code source dans /usr/local/pgsql a été effectuée. Si vous l'avez installé et que ce message d'erreur apparaît toujours, vous devrez lire la section *Configuration du module PostgreSQL Database Server* pour plus de détails sur la façon d'ajuster les chemins utilisés par le module.

Si vous utilisez Linux et que PostgreSQL n'est pas installé, utilisez le module Packages logiciels pour installer tous les packages commençant par postgres à partir du CD de distribution ou du site Web. Souvent, il y en aura plusieurs, comme postgresql, postgresql-server et postgresql-devel. Pour les autres systèmes d'exploitation, visitez http://www.postgresql.org/ pour télécharger la distribution du code source, puis compilez-la et installez-la.

Le module PostgreSQL utilise des commandes SQL pour effectuer des actions telles que la création de tables, l'ajout de champs et la modification d'enregistrements. Pour exécuter ces commandes, Webmin doit se connecter au serveur de base de données, ce qui peut être fait de deux manières. Il peut soit exécuter la commande psql avec les paramètres corrects et analyser sa sortie, soit utiliser la bibliothèque Perl DBI pour se connecter directement.

La première méthode est toujours disponible, car la commande psql est toujours installée lorsque le serveur de base de données l'est. Cependant, il n'est pas totalement fiable car certains types de données de table produisent une sortie qui ne peut pas toujours être analysée. Pour cette raison, vous devez installer les modules DBI et DBD::Pg Perl. Si l'un ou l'autre est manquant, un message s'affichera au bas de la page principale vous invitant à en installer un ou les deux en cliquant sur un lien. Cela vous mènera à une page du module Modules Perl où DBI et/ou DBD::Pg sont téléchargés et installés pour vous.

Création d'une nouvelle base de données

Lors de la première installation de PostgreSQL, une base de données appelée template1 est généralement créée. Étant donné qu'il est utilisé comme modèle pour toutes les nouvelles bases de données, vous devez créer le vôtre pour contenir des tables dans lesquelles votre application stockera des données. Les étapes pour ce faire sont :

  1. Sur la page principale du module, cliquez sur le lien *Créer une nouvelle base de données* au-dessus ou en dessous du tableau des icônes de bases de données existantes.
  2. Saisissez un nom unique pour celui-ci dans le Nom de la base de données domaine. Celui-ci ne doit contenir que des lettres, des chiffres et le caractère _.
  3. Lorsque le chemin d'accès au fichier de la base de données le champ est défini sur Par défaut , les fichiers qui contiennent réellement les données de la base de données seront créés dans le répertoire par défaut. Sur les systèmes Linux, ce sera généralement quelque chose comme /var/lib/pgsql/data - sur d'autres systèmes d'exploitation, ce sera probablement /usr/local/pgsql/var. Pour utiliser un répertoire différent, en tant qu'utilisateur Unix sous lequel la base de données s'exécute (généralement postgres), créez-le d'abord avec la commande mkdir, puis exécutez initlocation avec le nom du répertoire comme paramètre. Sélectionnez ensuite le bouton radio de la section pour le chemin d'accès au fichier de la base de données champ et entrez le répertoire dans la zone de texte adjacente. Malheureusement, à moins que PostgreSQL n'ait été compilé pour prendre en charge les chemins de répertoire de données absolus, une erreur se produit lorsque vous cliquez sur Créer bouton. Par défaut, cette fonctionnalité n'est pas activée.
  4. Cliquez sur Créer bouton. La base de données sera ajoutée et vous serez renvoyé à la page principale du module qui devrait inclure sa nouvelle icône. Si une base de données appelée template1 existe sur votre serveur, toutes les tables ou autres objets qu'elle contient seront copiés dans la base de données nouvellement créée. Cela peut être utile si vous souhaitez ajouter de nombreuses bases de données avec des structures similaires.

Créer un nouveau tableau

Une table peut être ajoutée à une base de données existante à tout moment. Chaque table comporte un ou plusieurs champs, chacun ayant un type, une taille et d'autres attributs. Pour ajouter un tableau, les étapes à suivre sont :

  1. Sur la page principale, cliquez sur l'icône de la base de données à laquelle vous souhaitez ajouter la table. Cela vous amènera à la page d'édition de la base de données illustrée dans le screenshow ci-dessous, sur laquelle se trouve une icône pour chaque table existante.
  2. Entrez le nombre de champs que vous voulez que votre nouvelle table ait dans les Champs zone de texte à côté de Créer un nouveau tableau bouton , puis cliquez sur le bouton . Cela fait apparaître un formulaire pour entrer les détails de la nouvelle table et ses champs initiaux.
  3. Choisissez un nom pour la table et saisissez-le dans le champ Nom de la table domaine. Le nom doit être unique dans la base de données et ne doit contenir que des lettres, des chiffres et le caractère _.
  4. Chaque ligne des Champs initiaux table définit un champ qui sera ajouté à la nouvelle table. Le type de champ ajouté dépend de ce que vous saisissez pour la ligne sous chacune des colonnes suivantes :
    • Nom du champ Le nom de ce champ, qui doit être unique dans la table et doit être composé uniquement de lettres, de chiffres et de _. Si laissé vide, aucun champ ne sera ajouté pour cette ligne.
    • Type de données La sélection que vous effectuez dans ce menu détermine le type de données pouvant être stockées dans ce champ. Les types les plus courants sont varchar pour les chaînes de texte de longueur variable, int4 pour les nombres entiers et float4 pour les nombres fractionnaires. Voir les types de champs section ci-dessous pour plus de détails.
    • Largeur du texte Ce champ peut être laissé vide, auquel cas la taille par défaut du type choisi sera utilisée. Sinon, vous devez saisir un nombre correspondant au nombre de caractères (pour les champs char ou varchar) ou de chiffres (pour les champs numériques) que le champ peut stocker. Certains types tels que blob et date n'ont pas besoin ou autorisent la spécification d'un type.
    • Options de champ Si Tableau ? est coché, ce champ sera un tableau capable de stocker plus d'une valeur. Si Autoriser les valeurs nulles ? est cochée, la base de données autorisera l'insertion de valeurs SQL NULL dans ce champ. Si Clé primaire ? est coché, ce champ fera partie de la clé primaire de la table. Toutes les tables doivent avoir une clé, qui est généralement le premier champ et de type int ou varchar. Quand Unique ? est coché, PostgreSQL empêchera plus d'un enregistrement d'avoir la même valeur pour ce champ. Les champs de clé primaire sont également automatiquement uniques.
  1. Lorsque vous avez terminé de saisir les champs, cliquez sur Créer bouton en bas de la page. La table sera ajoutée à la base de données et vous serez renvoyé à la page répertoriant les tables existantes.


La page d'édition de la base de données

Ajouter et modifier des champs

De nouveaux champs peuvent être ajoutés aux tables et les noms des champs existants peuvent être modifiés. Il n'y a aucun moyen de changer le type de taille d'un champ, sauf si vous le supprimez et le rajoutez. Lorsqu'un champ est créé, il contiendra toujours initialement des valeurs NULL dans les lignes existantes de la table.

Pour ajouter un champ, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur l'icône de la base de données qui contient la table. Cliquez ensuite sur l'icône du tableau lui-même - cela vous amènera à une page répertoriant les noms, les types et les tailles des champs existants, comme indiqué dans la capture d'écran ci-dessous.
  2. Sélectionnez un type pour le nouveau champ dans le menu à côté du bouton *Ajouter un champ de type*. Lorsque vous cliquez dessus, votre navigateur affiche le formulaire de création de champ pour entrer le reste des détails.
  3. Choisissez un nom pour ce champ composé uniquement de lettres, de chiffres et du caractère _ et saisissez-le dans le Nom du champ zone de texte. Deux champs d'une même table ne peuvent pas porter le même nom.
  4. Pour un champ char ou varchar, saisissez le nombre maximal de caractères qu'il peut contenir dans la largeur du type zone de texte. Pour un champ numérique, vous devez à la place saisir deux nombres séparés par une virgule, comme 10,2 . Le premier est le nombre maximum de chiffres qu'un nombre dans ce champ peut stocker, et le second est le nombre de chiffres à droite de la virgule décimale. Pour les autres types de champs, la largeur du type la zone de texte n'apparaît pas du tout.
  5. Si vous souhaitez que ce champ puisse stocker plusieurs valeurs du même type, sélectionnez Oui pour le champ Tableau ? option.
  6. Cliquez sur Créer pour que le champ soit ajouté à la table, tant qu'il n'y a pas d'erreurs dans votre saisie.


La page d'édition du tableau

Une fois qu'un champ a été créé, vous ne pouvez changer que son nom, contrairement à MySQL où son type ou sa taille peuvent être modifiés. Cependant, cela signifie qu'il n'y a aucun risque pour les données qu'il contient. Pour renommer un champ dans une table, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur l'icône de la base de données contenant la table, puis sur l'icône de la table. Cela vous amènera à la liste des champs du tableau, dont un exemple est illustré dans la capture d'écran ci-dessus.
  2. Cliquez sur le nom du champ que vous souhaitez modifier.
  3. Dans le formulaire d'édition, mettez à jour le Nom du champ zone de texte avec un nouveau nom. Naturellement, cela doit suivre les mêmes règles de nommage que celles qui s'appliquent lors de la création d'un champ.
  4. Cliquez sur Enregistrer bouton pour que la modification soit effectuée dans la base de données.

Supprimer un champ

Contrairement à MySQL, le serveur de base de données PostgreSQL n'a pas de commande SQL intégrée pour supprimer un champ d'une table. Cependant, il est possible d'effectuer la suppression d'un champ en créant une nouvelle table temporaire dépourvue du champ, en supprimant l'ancienne table et en la renommant en temporaire avec le nom d'origine. Cela fonctionne et Webmin peut tout faire pour vous automatiquement - cependant, certaines informations telles que les index et les valeurs de champ par défaut seront perdues au cours du processus. Les données réelles de la table (à l'exception de celles du champ supprimé) seront cependant en sécurité.

Si votre table ne contient aucun index ou champ avec des valeurs par défaut, vous pouvez continuer et supprimer un champ en suivant ces étapes :

  1. Cliquez sur l'icône de la base de données contenant la table sur la page principale du module, puis sur l'icône de la table elle-même.
  2. Cliquez sur le champ de dépôt sur le formulaire d'édition de table, sous la liste des champs existants. Cela vous amène à une page répertoriant tous les champs du tableau, chacun d'eux ayant un bouton radio à côté sous Déposer celui-ci .
  3. Sélectionnez le champ du bouton radio que vous souhaitez supprimer du tableau.
  4. Cochez la case Sélectionner pour confirmer case à cocher en bas du formulaire.
  5. Appuyez sur le champ de dépôt bouton pour supprimer le champ choisi. Une fois supprimée, la même page sera réaffichée afin que vous puissiez en supprimer une autre si vous le souhaitez.

Types de champs

PostgreSQL a un grand nombre de types de champs, qui sont tous pris en charge par Webmin. Cependant, tous ne sont pas particulièrement utiles pour la base de données moyenne. La meilleure source d'informations est la documentation officielle sur http://www.postgresql.org/docs/7.3/static/datatype.html

PostgreSQL possède plusieurs types pour stocker des objets géométriques, tels que point, chemin, boîte et cercle, et des types pour les informations réseau telles que inet, cidr et macaddr. Les champs de tous ces types peuvent être créés et modifiés à l'aide de ce module, même s'ils ne sont pas documentés ci-dessus. Cependant, aucune autre base de données (telle qu'Oracle ou MySQL) ne prend en charge ces types, il peut donc être judicieux de les éviter si vous souhaitez que vos programmes soient indépendants de la base de données.

Afficher et modifier le contenu du tableau

Le module PostgreSQL vous permet d'afficher et de modifier le contenu de n'importe quelle table dans n'importe quelle base de données, même celles qui n'ont pas de clés primaires. Contrairement au module MySQL, il peut identifier des lignes spécifiques à modifier à l'aide de la colonne spéciale oid, qui contient un identifiant unique pour chaque enregistrement.

Pour afficher le contenu d'un tableau, procédez comme suit :

  1. Sur la page principale, cliquez sur l'icône de la base de données qui contient la table, puis sur l'icône de la table elle-même.
  2. Dans le formulaire d'édition du tableau, cliquez sur Afficher les données bouton en bas. Cela vous amènera à une page contenant un tableau des 20 premières lignes du tableau.
  3. Si le tableau contient plus de lignes qu'il n'est possible d'en afficher sur une seule page, le début et la fin de la plage visible et le nombre total de lignes seront affichés en haut. À côté se trouvent des flèches gauche et droite pour passer aux 20 enregistrements suivants ou précédents. Contrairement au module MySQL, il n'y a aucun moyen de rechercher des enregistrements ou d'accéder à un numéro de ligne particulier sur cette page.

Cette même page peut également être utilisée pour modifier, supprimer ou ajouter des enregistrements. Les enregistrements à modifier doivent d'abord être sélectionnés en utilisant les cases à cocher à droite de chaque ligne, ou le Sélectionner tout et *Inverser la sélection liens. Lorsque vous cliquez sur *Modifier les lignes sélectionnées , la page sera ré-affichée avec les valeurs de tous les enregistrements choisis dans des zones de texte. Effectuez les modifications souhaitées, puis cliquez sur Enregistrer bouton en bas de la page pour mettre à jour la base de données. Ou appuyez sur Annuler si vous souhaitez arrêter l'édition sans enregistrer vos modifications.

Pour supprimer des enregistrements, sélectionnez-les en utilisant les mêmes cases à cocher et liens de sélection, puis cliquez sur Supprimer les lignes sélectionnées bouton. Les enregistrements choisis seront immédiatement supprimés de la base de données sans autre confirmation.

Pour ajouter un nouvel enregistrement, cliquez sur Ajouter une ligne bouton sous le tableau. Une ligne supplémentaire apparaîtra contenant des zones de texte vides pour que vous saisissiez de nouveaux détails. Cliquez sur Enregistrer ajoutera le nouvel enregistrement à la table et déplacera l'affichage afin que vous puissiez voir la nouvelle ligne. Vous pouvez également cliquer sur Annuler si vous changez d'avis sur l'ajout d'un enregistrement.

Suppression de tables et de bases de données

Ce module contient également des boutons pour supprimer une table d'une base de données, ou une base de données entière et tout ce qu'elle contient. Lorsqu'une table est supprimée, tous les enregistrements et champs qu'elle contient seront perdus

Pour en supprimer un, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur l'icône de la base de données dont vous souhaitez supprimer la table, puis sur l'icône de la table elle-même.
  2. Cliquez sur le Déposer le tableau sous la liste des champs. Cela vous mènera à une page de confirmation qui vous demande si vous êtes sûr et vous indique combien d'enregistrements seront supprimés.
  3. Pour continuer, cliquez sur Déposer le tableau bouton à nouveau. Une fois qu'il a été supprimé, vous serez de retour à la liste des tables survivantes dans la base de données.

Il est également possible de supprimer une base de données entière et toutes les tables et tous les enregistrements qu'elle contient. Toute base de données peut être supprimée, mais supprimer template1 est une mauvaise idée car le module s'y connecte lors de la récupération de la liste des autres bases de données et suppose qu'il existera toujours. Comme d'habitude, à moins que vous n'ayez fait une sauvegarde, il n'y a aucun moyen d'annuler la suppression.

En supposant que vous souhaitiez vraiment supprimer une base de données, suivez ces étapes :

  1. Sur la page principale, cliquez sur l'icône de la base de données que vous souhaitez supprimer.
  2. Cliquez sur Déposer la base de données sous la liste des tables. Une page de confirmation s'affichera, vous indiquant combien de tables et d'enregistrements seront perdus si vous continuez.
  3. Pour poursuivre la suppression, cliquez sur Supprimer la base de données bouton et vous serez renvoyé à la page principale du module lorsque cela sera fait.

Il est possible de supprimer la base de données template1 si vous modifiez la base de données PostgreSQL initiale sur la configuration du module vers une autre base de données qui ne sera pas supprimée.

Exécuter des commandes SQL

Le module PostgreSQL fournit également une interface simple pour exécuter des commandes SQL sur une base de données et afficher leur sortie. Les étapes pour l'utiliser sont :

  1. Sur la page principale, cliquez sur l'icône de la base de données dans laquelle vous souhaitez exécuter des commandes.
  2. Cliquez sur Exécuter SQL sous la liste des icônes du tableau. Cela vous mènera à une page pour entrer des commandes SQL, exécuter des fichiers de commandes et charger des données dans la base de données.
  3. Saisissez n'importe quelle commande SQL dans la zone de texte en haut de la page et cliquez sur Exécuter bouton. S'il y a eu une erreur dans votre syntaxe SQL ou si la commande ne peut pas être exécutée, le message d'erreur de PosygreSQL s'affichera. Sinon, un tableau des résultats du SQL (le cas échéant) sera affiché. Seules les instructions SELECT produisent des résultats - UPDATE, INSERT et les autres commandes qui modifient les enregistrements ne le font pas.

Contrairement au module MySQL, il n'y a pas d'historique des commandes ni de prise en charge de l'exécution de plusieurs instructions SQL à partir d'un fichier.

Sauvegarder et restaurer une base de données

Si l'une de vos bases de données contient des informations importantes, elle doit être sauvegardée régulièrement au cas où une panne de disque ou une erreur SQL entraînerait une perte de données. Il est également judicieux de créer une sauvegarde avant d'effectuer une opération potentiellement risquée, telle que l'exécution d'une instruction SQL complexe qui modifie de nombreux enregistrements.

En raison de changements dans les paramètres des commandes pg_dump et pg_restore, le module vous permet uniquement de créer et de restaurer des sauvegardes lors de l'utilisation des versions 7.2 et supérieures de PostgreSQL. Si vous utilisez une version plus ancienne, les boutons expliqués dans les étapes ci-dessous ne seront pas visibles.

Pour utiliser le module pour faire une sauvegarde, les étapes à suivre sont :

  1. Sur la page principale, cliquez sur l'icône de la base de données que vous souhaitez sauvegarder.
  2. Cliquez sur le bouton * Sauvegarder * sous la liste des tables. Cela vous mènera à un formulaire pour entrer la destination de sauvegarde et les options.
  3. Dans le Chemin du fichier de sauvegarde , saisissez le chemin d'accès complet au fichier dans lequel la sauvegarde doit être écrite, par exemple /tmp/backup.tar . Le fichier ne doit pas déjà exister - si c'est le cas, une erreur se produira lorsque vous cliquerez sur Sauvegarder bouton.
  4. Dans le menu Format de fichier de sauvegarde, sélectionnez le type de fichier à créer. Les options disponibles sont :* Texte SQL brut * Le fichier contiendra une série de commandes SQL qui recréent les tables dans la base de données et les repeuplent avec des données. Ce format est pratique dans la mesure où les fichiers de sauvegarde peuvent être modifiés manuellement, mais vous ne pouvez pas inclure d'objets volumineux (comme des blobs) dans une sauvegarde SQL, ni effectuer une restauration sélective à partir de celle-ci. *Archive tar *Le fichier de sauvegarde sera un fichier tar Unix standard, contenant divers fichiers qui spécifient les structures et le contenu des tables. Les objets volumineux sont pris en charge et une restauration sélective est possible. *Archive personnalisée *Le fichier sera au format de sauvegarde personnalisé de PostgreSQL, qui est compressé et prend en charge les objets volumineux, l'exclusion des données et la réorganisation au moment de la restauration.
  5. Pour effectuer la sauvegarde, appuyez sur le bouton * Sauvegarder * en bas du formulaire. Si tout se passe bien, vous serez redirigé vers la liste des tables - sinon, une page montrant la commande de sauvegarde exécutée et sa sortie d'erreur s'affichera.

Si vous avez une base de données qui est utilisée à des fins de production importantes, elle doit être sauvegardée régulièrement, par exemple une fois par jour. Au lieu de suivre les instructions ci-dessus tous les jours, vous pouvez utiliser le module Scheduled Cron Jobs (traité au chapitre 10) pour créer une tâche qui effectue la sauvegarde pour vous. Pour savoir quelle commande exécuter, utilisez les instructions ci-dessus pour effectuer d'abord une sauvegarde, puis visitez le module Webmin Actions Log (traité au chapitre 54) pour voir la commande utilisée.

Une fois qu'un fichier de sauvegarde a été créé, il peut être restauré sur le même système ou sur un autre serveur exécutant MySQL. Les étapes sont :

  1. Sur la page principale du module, cliquez sur l'icône de la base de données dans laquelle la sauvegarde doit être restaurée.
  2. Cliquez sur Restaurer sous la liste des tables pour faire apparaître un formulaire de sélection du fichier de sauvegarde.
  3. Dans le Chemin du fichier de sauvegarde champ, entrez le chemin complet du fichier contenant les données de sauvegarde PostgreSQL, comme /tmp/backup.tar . Ce fichier peut être dans n'importe lequel des formats disponibles sur le formulaire de sauvegarde.
  4. Normalement, le processus de restauration tentera de recréer les tables avant d'y restaurer les données. Pour éviter cela, modifiez l'option Restaurer uniquement les données, pas les tables ? champ sur Oui . Cela ne fonctionnera que si toutes les tables de la sauvegarde existent déjà. Toutes les données qu'ils contiennent actuellement seront combinées avec les enregistrements restaurés.
  5. Normalement, le processus de restauration échouera si une table de la sauvegarde existe déjà dans la base de données. Pour que les tables existantes soient supprimées avant la restauration, modifiez l'option Supprimer les tables avant de restaurer ? champ sur Oui . Cela n'a aucun sens de définir à la fois ce champ et le champ précédent sur Oui .
  6. Cliquez sur Restaurer bouton pour recharger les données et les tables à partir du fichier de sauvegarde. Un message d'erreur indiquant la sortie de la commande pg_restore s'affichera en cas de problème - sinon, vous serez renvoyé à la liste des tables de la base de données.

Gestion des utilisateurs PostgreSQL

Comme vous vous en doutez, le serveur de base de données PostgreSQL ne permet pas simplement à quiconque de se connecter et de commencer à manipuler des données. Au lieu de cela, il vérifie les clients en leur demandant d'envoyer un nom d'utilisateur et un mot de passe, qu'il vérifie par rapport à sa propre liste d'utilisateurs interne. Cette liste d'utilisateurs de la base de données est totalement distincte de la liste des utilisateurs Unix dans le fichier /etc/passwd.

Par défaut, seul l'utilisateur postgres existera et il aura un accès complet à toutes les bases de données et tables. Si vous écrivez une application qui utilise une base de données, un nouvel utilisateur doit être créé pour que cette application se connecte en tant que. Si plusieurs personnes accèdent à votre base de données à l'aide de la commande psql ou d'autres programmes clients, chacune doit avoir son propre identifiant et mot de passe.

Pour ajouter un nouvel utilisateur, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur Utilisateurs PostgreSQL icône. Cela vous mènera à une liste d'utilisateurs existants et de leurs capacités, comme indiqué dans la capture d'écran ci-dessous.
  2. Cliquez sur le lien Créer un nouvel utilisateur au-dessus ou au-dessous de la liste, ce qui fera apparaître le formulaire de création d'utilisateur.
  3. Saisissez un nom unique pour l'utilisateur, composé uniquement de lettres, de chiffres et du caractère _, dans le Nom d'utilisateur domaine.
  4. Pour définir un mot de passe pour cet utilisateur, sélectionnez le deuxième bouton radio dans le Mot de passe champ et entrez un mot de passe dans la zone de texte à côté de celui-ci. Si Aucun est choisi, l'utilisateur ne pourra pas se connecter à moins que le serveur ait été configuré pour autoriser les connexions sans mot de passe (comme expliqué dans la section *Restreindre l'accès client*).
  5. Si vous souhaitez que cet utilisateur puisse créer ses propres bases de données, modifiez l'option Peut créer des bases de données ? champ sur Non . Seul l'utilisateur d'administration principal (postgres) doit vraiment pouvoir le faire.
  6. Pour accorder à cet utilisateur les droits de modification et de création d'utilisateurs PostgreSQL, modifiez le champ Peut créer des utilisateurs ? champ sur Oui . Encore une fois, cela devrait normalement être laissé sur Non .
  7. Le Valable jusqu'au Le champ contrôle la durée pendant laquelle cet utilisateur peut être utilisé. Si Pour toujours est sélectionné, il n'aura pas de date d'expiration - mais si la deuxième option est choisie et qu'une date au format AAAA-MM-JJ est saisie dans le champ de texte, le compte ne sera plus utilisable après cette date.
  8. Cliquez sur Créer bouton pour ajouter le nouveau compte à la liste des utilisateurs de PostgreSQL. Les personnes ou les programmes pourront se connecter immédiatement en tant que cet utilisateur. Souvent, le serveur de base de données est configuré par défaut pour permettre à tout utilisateur local de se connecter sans avoir à fournir de mot de passe. Pour changer cela, consultez la section Restreindre l'accès client section.
  9. Pour configurer exactement les tables et les vues auxquelles ce nouvel utilisateur peut accéder, suivez les instructions de la section *Modification des autorisations d'objet*.


Utilisateurs PostgreSQL existants

Une fois qu'un utilisateur a été créé, il peut être modifié en cliquant sur son nom dans la liste des utilisateurs affichée dans la capture d'écran ci-dessus. Cela vous amène au formulaire d'édition qui est presque identique au formulaire de création d'utilisateur, sauf que le nom de l'utilisateur ne peut pas être modifié. Une fois que vous avez fini de modifier le mot de passe, la date d'expiration et d'autres champs, cliquez sur Enregistrer bouton pour activer les modifications.

Un utilisateur peut également être supprimé en cliquant sur Supprimer bouton sur sa page d'édition. Veillez à ne pas supprimer l'utilisateur postgres, car il est normalement utilisé par ce module Webmin pour se connecter à PostgreSQL. En fait, même la modification de cet utilisateur peut causer des problèmes si vous définissez une date d'expiration ou si vous lui enlevez la capacité de créer des bases de données ou d'autres utilisateurs.

Comme beaucoup d'autres modules, ce module peut être configuré pour créer, mettre à jour ou supprimer automatiquement un utilisateur PostgreSQL lorsqu'un utilisateur Unix est respectivement ajouté, modifié ou supprimé. Cela peut être utile si vous autorisez certains utilisateurs Unix de votre système à accéder aux bases de données et souhaitez synchroniser leurs mots de passe.

Pour configurer la synchronisation, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur Utilisateurs PostgreSQL et faites défiler jusqu'au formulaire sous la liste des comptes existants.
  2. Si vous souhaitez qu'un nouvel utilisateur PostgreSQL soit créé pour chaque nouvel utilisateur Unix, cochez la case *Ajouter un nouvel utilisateur PostgreSQL lorsqu'un utilisateur Unix est ajouté*. Les utilisateurs créés automatiquement n'auront cependant aucune autorisation d'objet spécifique.
  3. Si vous souhaitez que les utilisateurs PostgreSQL voient leur mot de passe modifié lorsque la même chose se produit pour les utilisateurs Unix correspondants, cochez la case *Mettre à jour un utilisateur PostgreSQL lorsque l'utilisateur Unix correspondant est modifié*.
  4. Pour qu'un utilisateur PostgreSQL soit supprimé en même temps que l'utilisateur Unix du même nom, cochez la case *Supprimer un utilisateur PostgreSQL lorsque l'utilisateur Unix correspondant est supprimé*.
  5. Cliquez sur Enregistrer pour activer les nouveaux paramètres de synchronisation.

Gestion des groupes PostgreSQL

PostgreSQL conserve sa propre liste interne de groupes, chacun pouvant contenir zéro ou plusieurs utilisateurs. Les groupes sont particulièrement utiles lors de l'attribution d'autorisations d'objet, car ils vous permettent d'accorder l'accès à une table ou à une vue à plusieurs utilisateurs à la fois. En dehors de cela, ils ne jouent aucun rôle dans le contrôle d'accès ou l'authentification.

Pour créer un groupe, les étapes à suivre sont :

  1. Sur la page principale du module, cliquez sur les Groupes PostgreSQL icône. Votre navigateur affichera un tableau des groupes existants et de leurs membres, le cas échéant. Lors de la première installation de PostgreSQL, aucun groupe n'est défini.
  2. Cliquez sur Créer un nouveau groupe lien pour accéder au formulaire de création de groupe.
  3. Saisissez un nom composé de lettres, de chiffres et du caractère _ dans le Nom du groupe domaine. Aucun autre groupe ou utilisateur ne peut porter le même nom.
  4. Laissez l'identifiant de groupe champ inchangé, car l'ID est choisi automatiquement par Webmin.
  5. Sélectionnez les utilisateurs qui seront membres de ce groupe dans les Membres liste. Dans la plupart des navigateurs, vous pouvez ctrl-clic pour sélectionner plus d'un nom d'utilisateur, ou Maj-clic pour sélectionner une plage entière.
  6. Cliquez sur Créer pour ajouter le groupe. Object permissions can now be assigned to it, as explained in the Editing object permissions section.

Just like a user, a group that you have created can be edited by clicking on its name in the list on the PostgreSQL Groups page, changing the name or membership list on the editing form and hitting Save . Or it can be deleted by clicking the Delete button on the same form.

Restricting client access

Usually, the default PostgreSQL configuration allows any user to connect to the database server from the same system without needing to login, but prevents all remote access. If you want to allow clients to connect from other systems (for example if you are setting up a database server that will be accessed from a separate web server), then PostgreSQL needs to be configured to allow this.

To grant access to another host, follow these instructions :

  1. On the module's main page, click on the Allowed Hosts icône. You will be taken to a page listing hosts from which connections are allowed, the databases clients can access and the authentication modes used. Typically, only local connections and those from 127.0.0.1 will be allowed initially.
  2. Click on the Create a new allowed host link above or below the list to bring up the host creation form.
  3. In the Host address field, select Single host and enter the IP or hostname of the remote client system into the adjacent field. Alternately, to allow an entire LAN select Network and enter the network address (like 192.168.1.0 ) and netmask (like 255.255.255.0 ) into the fields next to it.
  4. To give the specified host or network access to all databases on your server, leave the Database field set to All databases . Otherwise, make a selection from the menu to limit the client to just that one. If you want to grant a client access to two databases, you will need to add two host entries each with a different choice selected from Database menu.
  5. In the Authentication mode field, select Plaintext password . The option No authentication required will also allow users on the client system to connect, but without needing to provide a valid password. Clearly, this is not very secure.
  6. Hit the Create button to add the new allow host entry.

If your system has multiple users, each of whom has a data in a PostgreSQL database that belongs to them, you should not allow them to login to the database server without a password. By default, PostgreSQL allows exactly this, which is not particularly secure! Fortunately, it can be easily fixed. However, there is a risk that you will lock Webmin itself out of the database, as it is often set up by default to login as the user postgres without a password.

Follow the instructions below to re-configure the module to login with a password, and to force local users to do the same thing :

  1. On the module's main page, click on the PostgreSQL Users icon and then on the postgres user to bring up its editing form.
  2. Select the second radio button for the Password field and enter a nice secure password into the adjacent text field. Then click Save .
  3. Go back to the module's main page, and hit the Module Config link.
  4. In the Administration password field, select Set to and enter the password you chose into the text field. Then click Save at the bottom of the form.
  5. Click on the Allowed Hosts icon, and then on Local connection in the Host address colonne. Change the *Authentication mode* field to Plaintext password , and click the Save bouton. After your browser returns to the list of allowed hosts, click on 127.0.0.1 and make the same change.
  6. Return to the module's main page. If all went well, you will still be able to see and manage databases, and all users will require a password to connect.

When a client connects to the database server, PostgreSQL checks the host entries on the Allowed Hosts page in order. As soon as it finds one that matches the client address and requested database, the authentication mode for that entry is used. You can use this feature to block certain hosts while allowing all others by creating a host entry with the *Host address *field set to the IP you want to block, and the Authentication mode set to Reject connection . This entry must appear in the list above any broader entry that would allow the same client.

Because new allowed host entries are always added to the end of the list, the page has a feature for moving around. The up and down arrows under the Move column in the list can be clicked on to move an entry up or down one place respectively.

Editing object privileges

Each PostgreSQL object (a table, view, index or sequence) has an owner, which is the user who created it. By default, only the owner can select data from or update records in an object, which is not too useful if your server has multiple users who will all need access to the same tables. Fortunately, it is possible to grant access to database objects to other users or groups, by following the steps below :

  1. On the module's main page, click on the Granted Privileges icon. Assuming you actually have some tables in your databases, this will bring up a page listing all existing objects and their current permissions.
  2. Click on the name of the object that you want to grant access to, which will take you to its privileges editing form.
  3. The Grant privileges to table lists all users and groups to whom access has been granted, followed by a blank row for adding a new one. Most of the time, it will just contain that one empty row though. In the User column, select the name of the user or group to grant privileges to from the menu, or choose Everyone to grant access to all PostgreSQL users. In the Privileges column, check the boxes for the rights that should be granted to the chosen user or group. The available options are their meanings are :*SELECT *When checked, the user will be able to view records in this table or view with an SQL SELECT query. *UPDATE *When chosen, this option gives users the ability to update existing records in the table. *INSERT *This option gives users the right to add new records to the table with an SQL INSERT statement. *DELETE *When checked, the user will be able to delete existing records from the table. *RULE *Allows the user to create of rules on the table or view. A rule is an piece of SQL code that is executed to transform data inserted, updated or deleted in the table. *REFERENCES *Allows the user to create a field that references this table as a foreign key. *TRIGGER *When checked, the user will be able to create triggers for this table. Because the table only displays one empty row at a time, you will need to save and re-edit the object permissions if you want to grant access to more than one user. If several users are to be given the same permissions, it is better to put them in a group and grant access to the group instead. # Hit the Save button at the bottom of the page to make the new permissions active.

Unlike MySQL, there is no way to give a user access to an entire database, or just to a field within a table. All privileges are granted at the table level only.

Module access control

As WebminUsers explains, it is possible to create a Webmin user who has access to only a subset of the features of some modules. In the case of the PostgreSQL Database Server module, you can limit a user to being able to manage tables and fields in specific databases, and prevent him from editing users, groups or granted permissions. This can be useful if various databases on your server are owned by different people, and you want to give each of them a Webmin login to manage only those that belong to them.

Once a user has been given access to the module, to limit him to only certain databases the steps to follow are :

  1. In the Webmin Users module, click on PostgreSQL Database Server next to the name of a user or group who has access to the module.
  2. On the access control form, change the Can edit module configuration? field to No . This is necessary to prevent the user changing the programs that the module uses for accessing the database.
  3. In the Databases this user can manage field, choose the Selected option. Then select the databases he should have access to from the list below.
  4. Change the Can create new databases? field to No . There is no reason that a restricted user of this type should be able to add new databases.
  5. Unless you want the user to be able to delete his own databases, change the Can drop databases? field to No . Leaving it set to Yes is harmless though, as he will only be able to delete those that you have granted him access to.
  6. Change the Can stop and start PostgreSQL server? field to No .
  7. Change the Can edit users, groups, hosts and grants? field to No , so that he cannot create a new PostgreSQL user with access to all databases.
  8. Set the Can create backups? field to No , as giving a user the rights to make a backup may allow him to overwrite files on your system.
  9. The Can restore backups? field can be safely set to Yes , as there is no danger in allowing a user to re-load data into his databases from a backup file.
  10. Finally, to make the new access control restrictions active, click Save .

Configuring the PostgreSQL Database Server module

Like most other modules, this one has several options that you can set by clicking on the Module Config link in the top-left corner of its main page. Those fields listed under *Configurable option* relate to its connection to the database and user interface, while those under System configuration define the paths to the PostgresSQL programs and files.

Unless you have installed the database server in a different directory to the default for your operating system, fields in the second section do not generally need to be changed. This can happen if you installed PostgreSQL from the source code instead of using the package supplied with your Linux distribution, or if you have two copies of PostgreSQL installed and are configuring a clone of the module (covered in WebminConfiguration) to manage the second install.


Webmin
  1. Qu'est-ce qu'un serveur de base de données et à quoi sert-il ?

  2. PostgreSQL Drop Database avec des exemples

  3. Comment créer une base de données dans PostgreSQL

  4. Serveur de messagerie instantanée Jabber

  5. Comment sécuriser le serveur PostgreSQL

Comment installer le serveur de base de données PostgreSQL CentOS 8

Serveur LDAP

Serveur de base de données MySQL

Comment installer PostgreSQL sur Ubuntu 16.04

Comment créer une base de données PostgreSQL ?

15 commandes pratiques d'administration de base de données PostgreSQL