Next: , Previous: , Up: Services   [Contents][Index]

10.8.10 Database Services

The (gnu services databases) module provides the following services.


The following example describes a PostgreSQL service with the default configuration.

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

If the services fails to start, it may be due to an incompatible cluster already present in data-directory. Adjust it (or, if you don’t need the cluster anymore, delete data-directory), then restart the service.

Peer authentication is used by default and the postgres user account has no shell, which prevents the direct execution of psql commands as this user. To use psql, you can temporarily log in as postgres using a shell, create a PostgreSQL superuser with the same name as one of the system users and then create the associated database.

sudo -u postgres -s /bin/sh
createuser --interactive
createdb $MY_USER_LOGIN      # Replace appropriately.
Data Type: postgresql-configuration

Data type representing the configuration for the postgresql-service-type.


PostgreSQL package to use for the service.

port (default: 5432)

Port on which PostgreSQL should listen.

locale (default: "en_US.utf8")

Locale to use as the default when creating the database cluster.

config-file (default: (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.

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

Directory in which to store the data.

extension-packages (default: '())

Additional extensions are loaded from packages listed in extension-packages. Extensions are available at runtime. For instance, to create a geographic database using the postgis extension, a user can configure the postgresql-service as in this example:

(use-package-modules databases geo)

  ;; postgresql is required to run `psql' but postgis is not required for
  ;; proper operation.
  (packages (cons* postgresql %base-packages))
      (service postgresql-service-type
                (postgresql postgresql-10)
                (extension-packages (list postgis))))

Then the extension becomes visible and you can initialise an empty geographic database in this way:

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

There is no need to add this field for contrib extensions such as hstore or dblink as they are already loadable by postgresql. This field is only required to add extensions provided by other packages.

Data Type: 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
            (log-destination "stderr")
             (plain-file "pg_hba.conf"
local	all	all			trust
host	all	all 	md5
host	all	all	::1/128 	md5"))
             '(("session_preload_libraries"     "'auto_explain'")
               ("random_page_cost"              "2")
               ("auto_explain.log_min_duration" "'100ms'")
               ("work_mem"                      "'500MB'")
               ("logging_collector"             "on")
               ("log_directory"                 "'/var/log/postgresql'")))))))
log-destination (default: "syslog")

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

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

Filename or G-expression for the host-based authentication configuration.

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

Filename or G-expression for the user name mapping configuration.

extra-config (default: '())

List of additional keys and values to include in the PostgreSQL config file. Each entry in the list should be a list where the first element is the key, and the remaining elements are the values.


Scheme Procedure: mysql-service [#:config (mysql-configuration)]

Return a service that runs mysqld, the MySQL or MariaDB database server.

The optional config argument specifies the configuration for mysqld, which should be a <mysql-configuration> object.

Data Type: mysql-configuration

Data type representing the configuration of mysql-service.

mysql (default: mariadb)

Package object of the MySQL database server, can be either mariadb or mysql.

For MySQL, a temporary root password will be displayed at activation time. For MariaDB, the root password is empty.

port (default: 3306)

TCP port on which the database server listens for incoming connections.


Scheme Variable: memcached-service-type

This is the service type for the Memcached service, which provides a distributed in memory cache. The value for the service type is a memcached-configuration object.

(service memcached-service-type)
Data Type: memcached-configuration

Data type representing the configuration of memcached.

memcached (default: memcached)

The Memcached package to use.

interfaces (default: '(""))

Network interfaces on which to listen.

tcp-port (default: 11211)

Port on which to accept connections on,

udp-port (default: 11211)

Port on which to accept UDP connections on, a value of 0 will disable listening on a UDP socket.

additional-options (default: '())

Additional command line options to pass to memcached.


Scheme Variable: mongodb-service-type

This is the service type for MongoDB. The value for the service type is a mongodb-configuration object.

(service mongodb-service-type)
Data Type: mongodb-configuration

Data type representing the configuration of mongodb.

mongodb (default: mongodb)

The MongoDB package to use.

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

The configuration file for MongoDB.

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

This value is used to create the directory, so that it exists and is owned by the mongodb user. It should match the data-directory which MongoDB is configured to use through the configuration file.


Scheme Variable: redis-service-type

This is the service type for the Redis key/value store, whose value is a redis-configuration object.

Data Type: redis-configuration

Data type representing the configuration of redis.

redis (default: redis)

The Redis package to use.

bind (default: "")

Network interface on which to listen.

port (default: 6379)

Port on which to accept connections on, a value of 0 will disable listening on a TCP socket.

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

Directory in which to store the database and related files.

Next: , Previous: , Up: Services   [Contents][Index]