Nächste: Mail-Dienste, Vorige: Dateisuch-Dienste, Nach oben: Dienste [Inhalt][Index]
Das Modul (gnu services databases)
stellt die folgenden Dienste zur
Verfügung.
Der Diensttyp für den PostgreSQL-Datenbankserver. Sein Wert muss ein
gültiges postgresql-configuration
-Objekt sein, wie unten
beschrieben. 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
Der Datentyp repräsentiert die Konfiguration für den
postgresql-service-type
.
postgresql
(Vorgabe: postgresql-10
)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)
)Aus welcher Konfigurationsdatei die Laufzeitkonfiguration von PostgreSQL geladen werden soll. Vorgegeben ist, die Einstellungen aus einem postgresql-config-file-Verbundsobjekt mit Vorgabewerten zu nehmen.
log-directory
(Vorgabe: "/var/log/postgresql"
)In welchem Verzeichnis die Ausgabe von pg_ctl
in eine Datei namens
"pg_ctl.log"
geschrieben wird. Diese Datei kann zum Beispiel dabei
helfen, Fehler in der Konfiguration von PostgreSQL zu finden.
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.
create-account?
(Vorgabe: #t
)Ob ein Benutzer und eine Benutzergruppe postgres
angelegt werden
soll.
uid
(Vorgabe: #f
)Hier kann der Benutzeridentifikator (UID) für das Benutzerkonto des
postgres
-Daemons ausdrücklich angegeben werden. Das brauchen Sie
normalerweise nicht, weil automatisch eine freie UID zugewiesen wird.
Eine Situation, in der die Option doch hilfreich sein kann, ist, wenn data-directory auf einer Netzwerkfreigabe liegt, die eingebunden wird.
gid
(Vorgabe: #f
)Hier kann der Gruppenidentifikator (GID) für die Benutzergruppe des
postgres
-Daemons ausdrücklich angegeben werden.
Der Datentyp, der die Konfigurationsdatei von PostgreSQL repräsentiert. Wie im folgenden Beispiel gezeigt, kann er benutzt werden, um die Konfiguration von PostgreSQL anzupassen. Es sei darauf hingewiesen, dass Sie jeden beliebigen G-Ausdruck oder Dateinamen anstelle dieses Verbunds angeben können, etwa wenn Sie lieber eine bestehende Konfigurationsdatei benutzen möchten.
(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"
)Welche Protokollierungsmethode für PostgreSQL benutzt werden soll. Hier können mehrere Werte kommagetrennt angegeben werden.
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
(Vorgabe: "/var/run/postgresql"
)Gibt an, in welchem Verzeichnis der oder die Unix-Socket(s) zu finden sind,
auf denen PostgreSQL auf Verbindungen von Client-Anwendungen lauscht. Ist
dies auf ""
gesetzt, so lauscht PostgreSQL auf gar keinem
Unix-Socket, so dass Verbindungen zum Server nur mit TCP/IP-Sockets
aufgebaut werden können.
Der Vorgabewert #false
bedeutet, dass der voreingestellte Wert von
PostgreSQL benutzt wird. Derzeit ist die Voreinstellung ‘/tmp’.
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.
Als Werte können Zahlen, Boolesche Ausdrücke oder Zeichenketten dienen. Sie
werden auf die Parametertypen von PostgreSQL, Boolean
, String
,
Numeric
, Numeric with Unit
und Enumerated
, abgebildet,
die hier
beschrieben werden.
Mit diesem Dienst können PostgreSQL-Rollen und -Datenbanken erzeugt werden, nachdem der PostgreSQL-Dienst gestartet worden ist. Hier ist ein Beispiel, wie man ihn benutzt.
(service postgresql-role-service-type
(postgresql-role-configuration
(roles
(list (postgresql-role
(name "test")
(create-database? #t))))))
Dieser Dienst kann mit weiteren Rollen erweitert werden, wie in diesem Beispiel:
(service-extension postgresql-role-service-type
(const (postgresql-role
(name "alice")
(create-database? #t))))
PostgreSQL verwaltet Zugriffsrechte auf Datenbanken mit dem Rollenkonzept. Eine Rolle kann als entweder ein Datenbanknutzer oder eine Gruppe von Datenbanknutzern verstanden werden, je nachdem, wie die Rolle eingerichtet wurde. Rollen können Eigentümer von Datenbankobjekten sein (zum Beispiel von Tabellen) und sie können anderen Rollen Berechtigungen auf diese Objekte zuweisen oder steuern, wer auf welche Objekte Zugriff hat.
name
Der Rollenname.
permissions
(Vorgabe: '(createdb login)
)Die Liste der Berechtigungen der Rolle. Unterstützte Berechtigungen sind
bypassrls
, createdb
, createrole
, login
,
replication
und superuser
.
create-database?
(Vorgabe: #f
)Ob eine Datenbank mit demselben Namen wie die Rolle erzeugt werden soll.
encoding
(Vorgabe: "UTF8"
)Mit welchem Zeichensatz in der Datenbank Text gespeichert wird.
collation
(Vorgabe: "en_US.utf8"
)Nach welcher Reihenfolge Zeichenketten in der Locale sortiert werden.
ctype
(Vorgabe: "en_US.utf8"
)Nach welchen Vorgaben Zeichen in der Locale klassifiziert werden.
template
(Vorgabe: "template1"
)Welche Vorlage nach Voreinstellung kopiert wird, wenn neue Datenbanken
angelegt werden. Benutzen Sie "template0"
für eine unveränderte
Datenbank ohne systemeigene Anpassungen.
Der Datentyp, der die Konfiguration des postgresql-role-service-type repräsentiert.
host
(Vorgabe: "/var/run/postgresql"
)Mit welchem PostgreSQL-Host eine Verbindung hergestellt werden soll.
log
(Vorgabe: "/var/log/postgresql_roles.log"
)Der Dateiname der Protokolldatei.
roles
(Vorgabe: '()
)Welche PostgreSQL-Rollen von Anfang an erzeugt werden sollen.
Dies ist der Diensttyp für einen Datenbankserver zu MySQL oder
MariaDB. Sein Wert ist ein mysql-configuration
-Objekt, das das zu
nutzende Paket sowie verschiedene Einstellungen für den
mysqld
-Daemon festlegt.
Der Datentyp, der die Konfiguration des mysql-service-type repräsentiert.
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"
)Auf welcher IP-Adresse auf Verbindungen gelauscht wird. Benutzen Sie
"0.0.0.0"
, wenn sich der Server an alle verfügbaren
Netzwerkschnittstellen binden soll.
port
(Vorgabe: 3306
)Der TCP-Port, auf dem der Datenbankserver auf eingehende Verbindungen lauscht.
socket
(Vorgabe: "/run/mysqld/mysqld.sock"
)Welche Socket-Datei für lokale Verbindungen (die also nicht über ein Netzwerk laufen) benutzt wird.
extra-content
(Vorgabe: ""
)Weitere Einstellungen für die Konfigurationsdatei my.cnf.
extra-environment
(Vorgabe: #~'()
)Welche Liste von Umgebungsvariablen dem mysqld
-Prozess mitgegeben
wird.
auto-upgrade?
(Vorgabe: #t
)Ob nach dem Starten des Dienstes mysql_upgrade
automatisch
ausgeführt werden soll. Das ist nötig, um das Systemschema nach
„großen“ Aktualisierungen auf den neuen Stand zu bringen (etwa beim Umstieg
von MariaDB 10.4 auf 10.5), aber Sie können es abschalten, wenn Sie das
lieber manuell vornehmen.
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.
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
)Der Port, auf dem Verbindungen akzeptiert werden.
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.
Dies ist der Diensttyp für den Schlüssel-/Wert-Speicher
Redis, dessen Wert ein
redis-configuration
-Objekt ist.
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: Mail-Dienste, Vorige: Dateisuch-Dienste, Nach oben: Dienste [Inhalt][Index]