Nächste: , Vorige: , Nach oben: Dienste   [Inhalt][Index]


10.8.10 Datenbankdienste

Das Modul (gnu services databases) stellt die folgenden Dienste zur Verfügung.

PostgreSQL

Das folgende Beispiel zeigt einen PostgreSQL-Dienst in seiner Vorgabekonfiguration.

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

Wenn diese Dienste nicht starten können, ist vielleicht bereits ein inkompatibler Datenbankverbund („Cluster“) in data-directory vorhanden. Ändern Sie dann den Wert dafür (oder falls Sie den Verbund nicht mehr brauchen, löschen Sie data-directory einfach) und starten Sie den Dienst neu.

Nach Voreinstellung müssen sich normale Benutzerkonten des Guix-Systems, die mit PostgreSQL kommunizieren, sogenannte „Peers“, zunächst authentifizieren. Allerdings ist für das postgres-Benutzerkonto keine Shell eingestellt, wodurch keine psql-Befehle durch diesen Benutzer ausgeführt werden können. Um psql benutzen zu können, können Sie sich vorläufig als der postgres-Nutzer unter Angabe einer Shell anmelden, ein Konto für einen PostgreSQL-Administrator (einen „Superuser“) mit demselben Namen wie einer der Benutzer des Systems einrichten und dann die zugehörige Datenbank erstellen.

sudo -u postgres -s /bin/sh
createuser --interactive
createdb $BENUTZER_ANMELDENAME  # muss angepasst werden
Datentyp: postgresql-configuration

Der Datentyp repräsentiert die Konfiguration für den postgresql-service-type.

postgresql

Das PostgreSQL-Paket, was für diesen Dienst benutzt werden soll.

port (Vorgabe: 5432)

Der Port, auf dem PostgreSQL lauschen soll.

locale (Vorgabe: "en_US.utf8")

Welche Regions- und Spracheinstellung („Locale“) beim Erstellen des Datenbankverbunds voreingestellt werden soll.

config-file (Vorgabe: (postgresql-config-file))

The configuration file to use when running PostgreSQL. The default behaviour uses the postgresql-config-file record with the default values for the fields.

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

The directory where pg_ctl output will be written in a file named "pg_ctl.log". This file can be useful to debug PostgreSQL configuration errors for instance.

data-directory (Vorgabe: "/var/lib/postgresql/data")

Das Verzeichnis, in dem die Daten gespeichert werden sollen.

extension-packages (Vorgabe: '())

Zusätzliche Erweiterungen werden aus den unter extension-packages aufgeführten Paketen geladen. Erweiterungen sind zur Laufzeit verfügbar. Zum Beispiel kann ein Nutzer den postgresql-service-Dienst wie in diesem Beispiel konfigurieren, um eine geografische Datenbank mit Hilfe der postgis-Erweiterung zu erzeugen:

(use-package-modules databases geo)

(operating-system
  
  ;; postgresql wird benötigt, um „psql“ auszuführen, aber postgis ist
  ;; für den Betrieb nicht unbedingt notwendig.
  (packages (cons* postgresql %base-packages))
  (services
    (cons*
      (service postgresql-service-type
               (postgresql-configuration
                (postgresql postgresql-10)
                (extension-packages (list postgis))))
      %base-services)))

Dann wird die Erweiterung sichtbar und Sie können eine leere geografische Datenbak auf diese Weise initialisieren:

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

Es ist nicht notwendig, dieses Feld für contrib-Erweiterungen wie hstore oder dblink hinzuzufügen, weil sie bereits durch postgresql geladen werden können. Dieses Feld wird nur benötigt, um Erweiterungen hinzuzufügen, die von anderen Paketen zur Verfügung gestellt werden.

Datentyp: postgresql-config-file

Data type representing the PostgreSQL configuration file. As shown in the following example, this can be used to customize the configuration of PostgreSQL. Note that you can use any G-expression or filename in place of this record, if you already have a configuration file you’d like to use for example.

(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 (Vorgabe: "syslog")

The logging method to use for PostgreSQL. Multiple values are accepted, separated by commas.

hba-file (Vorgabe: %default-postgres-hba)

Ein Dateiname oder G-Ausdruck für die Konfiguration der Authentifizierung durch den Server („Host-based Authentication“).

ident-file (Vorgabe: %default-postgres-ident)

Ein Dateiname oder G-Ausdruck für die Konfiguration der Benutzernamensabbildung („User name mapping“).

socket-directory (default: "/var/run/postgresql")

Specifies the directory of the Unix-domain socket(s) on which PostgreSQL is to listen for connections from client applications. If set to #false PostgreSQL does not listen on any Unix-domain sockets, in which case only TCP/IP sockets can be used to connect to the server.

extra-config (Vorgabe: '())

Eine Liste zusätzlicher Schlüssel-Wert-Kombinationen, die in die PostgreSQL-Konfigurationsdatei aufgenommen werden sollen. Jeder Eintrag in der Liste muss eine Liste von Listen sein, deren erstes Element dem Schlüssel entspricht und deren übrige Elemente die Werte angeben.

The values can be numbers, booleans or strings and will be mapped to PostgreSQL parameters types Boolean, String, Numeric, Numeric with Unit and Enumerated described here.

Scheme Variable: postgresql-role-service-type

This service allows to create PostgreSQL roles and databases after PostgreSQL service start. Here is an example of its use.

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

This service can be extended with extra roles, as in this example:

(service-extension postgresql-role-service-type
                   (const (postgresql-role
                           (name "alice")
                           (create-database? #t))))
Data Type: postgresql-role

PostgreSQL manages database access permissions using the concept of roles. A role can be thought of as either a database user, or a group of database users, depending on how the role is set up. Roles can own database objects (for example, tables) and can assign privileges on those objects to other roles to control who has access to which objects.

name

The role name.

permissions (default: '(createdb login))

The role permissions list. Supported permissions are bypassrls, createdb, createrole, login, replication and superuser.

create-database? (default: #f)

Whether to create a database with the same name as the role.

Data Type: postgresql-role-configuration

Data type representing the configuration of postgresql-role-service-type.

host (default: "/var/run/postgresql")

The PostgreSQL host to connect to.

log (default: "/var/log/postgresql_roles.log")

File name of the log file.

roles (default: '())

The initial PostgreSQL roles to create.

MariaDB/MySQL

Scheme Variable: mysql-service-type

This is the service type for a MySQL or MariaDB database server. Its value is a mysql-configuration object that specifies which package to use, as well as various settings for the mysqld daemon.

Datentyp: mysql-configuration

Data type representing the configuration of mysql-service-type.

mysql (Vorgabe: mariadb)

Das Paketobjekt des MySQL-Datenbankservers; es kann entweder mariadb oder mysql sein.

Für MySQL wird bei der Aktivierung des Dienstes ein temporäres Administratorpasswort („root“-Passwort) angezeigt. Für MariaDB ist das „root“-Passwort leer.

bind-address (Vorgabe: "127.0.0.1")

The IP on which to listen for network connections. Use "0.0.0.0" to bind to all available network interfaces.

port (Vorgabe: 3306)

Der TCP-Port, auf dem der Datenbankserver auf eingehende Verbindungen lauscht.

socket (default: "/run/mysqld/mysqld.sock")

Socket file to use for local (non-network) connections.

extra-content (Vorgabe: "")

Additional settings for the my.cnf configuration file.

auto-upgrade? (default: #t)

Whether to automatically run mysql_upgrade after starting the service. This is necessary to upgrade the system schema after “major” updates (such as switching from MariaDB 10.4 to 10.5), but can be disabled if you would rather do that manually.

Memcached

Scheme-Variable: memcached-service-type

Dies ist der Diensttyp für den Memcached-Dienst, der einen verteilten Zwischenspeicher im Arbeitsspeicher (einen „In-Memory-Cache“) zur Verfügung stellt. Der Wert dieses Dienstes ist ein memcached-configuration-Objekt.

(service memcached-service-type)
Datentyp: memcached-configuration

Der Datentyp, der die Konfiguration von memcached repräsentiert.

memcached (Vorgabe: memcached)

Das Memcached-Paket, das benutzt werden soll.

interfaces (Vorgabe: '("0.0.0.0"))

Auf welchen Netzwerkschnittstellen gelauscht werden soll.

tcp-port (Vorgabe: 11211)

Port on which to accept connections.

udp-port (Vorgabe: 11211)

Der Port, auf dem UDP-Verbindungen akzeptiert werden. Ist der Wert 0, wird nicht auf einem UDP-Socket gelauscht.

additional-options (Vorgabe: '())

Zusätzliche Befehlszeilenoptionen, die an memcached übergeben werden.

MongoDB

Scheme-Variable: mongodb-service-type

Dies ist der Diensttyp für MongoDB. Der Wert dieses Diensttyps ist ein mongodb-configuration-Objekt.

(service mongodb-service-type)
Datentyp: mongodb-configuration

Der Datentyp, der die Konfiguration von mongodb repräsentiert.

mongodb (Vorgabe: mongodb)

Das zu benutzende MongoDB-Paket.

config-file (Vorgabe: %default-mongodb-configuration-file)

Die Konfigurationsdatei für MongoDB.

data-directory (Vorgabe: "/var/lib/mongodb")

Dieser Wert wird benutzt, um das Verzeichnis so zu erstellen, dass es existiert und zum Benutzer mongodb gehört. Es sollte mit dem Verzeichnis übereinstimmen, das in der Konfigurationsdatei von MongoDB als „data-directory“ angegeben wird.

Redis

Scheme-Variable: redis-service-type

Dies ist der Diensttyp für den Schlüssel-/Wert-Speicher Redis, dessen Wert ein redis-configuration-Objekt ist.

Datentyp: redis-configuration

Der Datentyp, der die Konfiguration von redis repräsentiert.

redis (Vorgabe: redis)

Das zu benutzende Redis-Paket.

bind (Vorgabe: "127.0.0.1")

Die Netzwerkschnittstelle, auf der gelauscht wird.

port (Vorgabe: 6379)

Der Port, auf dem Verbindungen akzeptiert werden. Ist der Wert 0, wird das Lauschen auf einem TCP-Socket deaktiviert.

working-directory (Vorgabe: "/var/lib/redis")

Das Verzeichnis, in dem die Datenbank und damit zu tun habende Dateien gespeichert werden.


Nächste: , Vorige: , Nach oben: Dienste   [Inhalt][Index]