Suivant: , Précédent: , Monter: Services   [Table des matières][Index]


10.8.10 Services de bases de données

Le module (gnu services databases) fournit les services suivants.

PostgreSQL

L’exemple suivant décrit un service PostgreSQL avec la configuration par défaut.

(service postgresql-service-type
         (postgresql-configuration
          (postgresql postgresql-10)))

Si les services ne démarrent pas, cela peut être dû à une grappe incompatible déjà présente dans data-directory. Ajustez-la (ou, si vous n’avez plus besoin de la grappe, supprimez data-directory) puis redémarrez le service.

L’authentification des pairs est utilisé par défaut et le compte utilisateur postgres n’a pas de shell, ce qui évite l’exécution directe de psql en tant que cet utilisateur. Pour utiliser psql, vous pouvez vous authentifier temporairement en tant que postgres avec un shell, créer un superutilisateur PostgreSQL avec le même nom qu’un des utilisateurs du système et créer la base de données associée.

sudo -u postgres -s /bin/sh
createuser --interactive
createdb $MY_USER_LOGIN      # Remplacez comme vous voulez.
Type de données : postgresql-configuration

Type de données représentant la configuration de postgresql-service-type.

postgresql

Le paquet PostgreSQL à utiliser pour ce service.

port (par défaut : 5432)

Port sur lequel PostgreSQL écoutera.

locale (par défaut : "en_US.utf8")

Paramètre linguistique à utiliser par défaut lors de la création de la grappe de bases de données.

config-file (par défaut : (postgresql-config-file))

Le fichier de configuration à utiliser pour lancer PostgreSQL. Le comportement par défaut est d’utiliser l’enregistrement postgresql-config-file avec les valeurs par défaut pour les champs.

log-directory (default: "/var/log/postgresql")

Le répertoire où la sortie de pg_ctl sera écrite, dans un fichier nommé "pg_ctl.log". Ce fichier peut être utile pour déboguer les erreurs de configuration de PostgreSQL par exemple.

data-directory (par défaut : "/var/lib/postgresql/data")

Répertoire dans lequel stocker les données.

extension-packages (par défaut : '())

Des extensions supplémentaires peuvent être chargées à partir de paquets listés dans extension-packages. Les extensions sont disponibles à l’exécution. Par exemple, pour créer une base de données géographique avec l’extension postgis, on peut configurer postgresql-service de cette manière :

(use-package-modules databases geo)

(operating-system
  ...
  ;; postgresql est requis pour lancer `psql' mais postgis n'est pas requis pour son
  ;; bon fonctionnement.
  (packages (cons* postgresql %base-packages))
  (services
    (cons*
      (service postgresql-service-type
               (postgresql-configuration
                (postgresql postgresql-10)
                (extension-packages (list postgis))))
      %base-services)))

Ensuite l’extension devient visible et vous pouvez initialiser une base de données géographique de cette manière :

psql -U postgres
> create database postgistest;
> \connect postgistest;
> create extension postgis;
> create extension postgis_topology;

Vous n’avez pas besoin d’ajouter ce champ pour les extensions « contrib » comme hstore ou dblink comme elles sont déjà exploitables par postgresql. Ce champ n’est requis que pour ajouter des extensions fournies par d’autres paquets.

Type de données : postgresql-config-file

Type de données représentant le fichier de configuration de PostgreSQL. Comme montré dans l’exemple suivant, on peut l’utiliser pour personnaliser la configuration de PostgreSQL. Remarquez que vous pouvez utiliser n’importe quelle G-expression ou nom de fichier à la place de cet enregistrement, si par exemple vous avez déjà un fichier de configuration que vous voulez utiliser.

(service postgresql-service-type
         (postgresql-configuration
          (config-file
           (postgresql-config-file
            (log-destination "stderr")
            (hba-file
             (plain-file "pg_hba.conf"
                         "
local	all	all			trust
host	all	all	127.0.0.1/32 	md5
host	all	all	::1/128 	md5"))
            (extra-config
             '(("session_preload_libraries"     "auto_explain")
               ("random_page_cost"              2)
               ("auto_explain.log_min_duration" "100 ms")
               ("work_mem"                      "500 MB")
               ("logging_collector"             #t)
               ("log_directory"                 "/var/log/postgresql")))))))
log-destination (par défaut : "syslog")

La méthode de journalisation de PostgreSQL. Plusieurs valeurs sont possibles, séparées par des virgules.

hba-file (par défaut : %default-postgres-hba)

Nom de fichier ou G-expression pour la configuration de l’authentification par hôte.

ident-file (par défaut : %default-postgres-ident)

Nom de fichier ou G-expression pour la configuration de la correspondance de noms d’utilisateurs.

socket-directory (par défaut : #false)

Spécifie le répertoire des sockets Unix-domain sur lesquels PostgreSQL écoutera les connexion d’applications clientes. Si la valeur est "", PostgreSQL n’écoute sur aucun socket Unix-domain, auquel cas seuls les socket TCP/IP permettent de se connecter au serveur.

Par défaut, la valeur #false signifie que la valeur par défaut de PostgreSQL sera utilisée, actuellement ‘/tmp’.

extra-config (par défaut : '())

Liste de clés et valeurs supplémentaires à inclure dans le fichier de configuration de PostgreSQL. Chaque entrée dans la liste devrait être une liste où le premier élément est la clé, et les autres éléments sont les valeurs.

Les valeurs peuvent être des nombres, des booléens ou des chaînes et seront transformées en types de paramètres de PostgreSQL Boolean, String, Numeric, Numeric with Unit et Enumerated décrits ici.

Variable Scheme : postgresql-role-service-type

Ce service permet de créer des rôles PostgreSQL et des bases de données après le démarrage du service PostgreSQL. Voici un exemple d’utilisation.

(service postgresql-role-service-type
            (postgresql-role-configuration
             (roles
              (list (postgresql-role
                     (name "test")
                     (create-database? #t))))))

Ce service peut être étendu avec des rôles supplémentaires, comme dans cet exemple :

(service-extension postgresql-role-service-type
                   (const (postgresql-role
                           (name "alice")
                           (create-database? #t))))
Type de données : postgresql-role

PostgreSQL gère les permissions d’accès à la base de données en utilisant le concept de rôle. Un rôle est soit comme un utilisateur de la base de données, soit un groupe d’utilisateurs, en fonction du paramétrage du rôle. Les rôles peuvent posséder des objets de la base (par exemple des tables) et peuvent assigner des privilèges sur ces objets à d’autres rôles pour contrôler qui a accès à quels objets.

name

Le nom du rôle.

permissions (par défaut : '(createdb login))

La liste des permissions du rôle. Les permissions prises en charge sont bypassrls, createdb, createrole, login, replication et superuser.

create-database? (par défaut : #f)

Indique s’il faut créer une base de données avec le même nom que le rôle.

Type de données : postgresql-role-configuration

Type de données représentant la configuration de postgresql-role-service-type.

host (par défaut : "/var/run/postgresql")

L’hôte PostgreSQL sur lequel se connecter.

log (par défaut : "/var/log/postgresql_roles.log")

Nom du fichier du fichier de journal.

roles (par défaut : '())

Les rôles PostgreSQL initiaux à créer.

MariaDB/MySQL

Variable Scheme : mysql-service-type

C’est le type du service pour une base de donnée MySQL ou MariaDB. Sa valeur est un objet mysql-configuration, qui spécifie le paquet à utiliser ainsi que divers paramètres pour le démon mysqld.

Type de données : mysql-configuration

Type de données représentant la configuration de mysql-service-type.

mysql (par défaut : mariadb)

Objet paquet du serveur de base de données MySQL, qui peut être soit mariadb, soit mysql.

Pour MySQL, un mot de passe root temporaire sera affiché à l’activation. Pour MariaDB, le mot de passe root est vide.

bind-address (par défaut : "127.0.0.1")

L’IP sur laquelle écouter les connexions réseau. Utilisez "0.0.0.0" pour écouter sur toutes les interfaces réseaux.

port (par défaut : 3306)

Port TCP sur lequel le serveur de base de données écoute les connexions entrantes.

socket (par défaut : "/run/mysqld/mysqld.sock")

Fichier de socket à utiliser pour les connexions locales (pas via le réseau).

extra-content (par défaut : "")

Paramètres supplémentaires pour le fichier de configuration my.cnf.

auto-upgrade? (par défaut : #t)

Indique s’il faut automatiquement lancer mysql_upgrade après avoir démarré le service. C’est nécessaire pour mettre à jour le schéma système après une mise à jour « majeure » (comme de passer de MariaDB 10.4 à 10.5), mais peut être désactivé si vous voulez plutôt le faire manuellement.

Memcached

Variable Scheme : memcached-service-type

C’est le type de service pour le service Memcached qui fournit un cache en mémoire distribué. La valeur pour le type de service est un objet memcached-configuration.

(service memcached-service-type)
Type de données : memcached-configuration

Type de données représentant la configuration de memcached.

memcached (par défaut : memcached)

Le paquet Memcached à utiliser.

interfaces (par défaut : '("0.0.0.0"))

Les interfaces réseaux sur lesquelles écouter.

tcp-port (par défaut : 11211)

Port sur lequel accepter les connexions.

udp-port (par défaut : 11211)

Port sur lequel accepter les connexions UDP, une valeur de 0 désactive l’écoute en UDP.

additional-options (par défaut : '())

Options de la ligne de commande supplémentaires à passer à memcached.

Redis

Variable Scheme : redis-service-type

C’est le type de service pour la base clef-valeur Redis dont la valeur est un objet redis-configuration.

Type de données : redis-configuration

Type de données représentant la configuration de redis.

redis (par défaut : redis)

Le paquet Redis à utiliser.

bind (par défaut : "127.0.0.1")

Interface réseau sur laquelle écouter.

port (par défaut : 6379)

Port sur lequel accepter les connexions, une valeur de 0 désactive l’écoute sur un socket TCP.

working-directory (par défaut : "/var/lib/redis")

Répertoire dans lequel stocker la base de données et les fichiers liés.


Suivant: , Précédent: , Monter: Services   [Table des matières][Index]