5.4 KiB
title | description | lead | date | draft | images | menu | weight | toc | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Database Integrations | A database integration reference guide | This section contains a database integration reference guide for Authelia. | 2022-11-19T16:47:09+11:00 | false |
|
320 | true |
We generally recommend using PostgreSQL for a database. If high availability is not a consideration we also support SQLite3.
It is also a general recommendation that if you're using PostgreSQL, MySQL, or MariaDB; that you do not
automatically upgrade the major/minor version of these databases, and pin the image tag so at most the patch version
is updated. For example for database version x.y.z
only the z
should change, x
and y
should remain the same.
It is also generally recommended that you do not rely on automatic update tools to perform this action unless you are sure they shut down the container properly (i.e. with a graceful stop).
PostgreSQL
The only current support criteria for PostgreSQL at present is that the version you're using is supported by the PostgreSQL developers. See Vendor Supported Versions more information.
We generally perform integration testing against the latest supported version of PostgreSQL and that is generally the recommended version for new installations.
Vendor Supported Versions
See the PostgreSQL Versioning Policy for information on the versions and platforms that are currently supported by this vendor.
MySQL
MySQL and MariaDB are both supported as part of the MySQL implementation. This is generally discouraged as PostgreSQL is widely considered as a significantly better database engine. If you choose to go with MySQL, we recommend specifically using the MariaDB backend.
MySQL comes with some rigid support requirements in addition to the standard requirements for us supporting a third party.
- Must both support the
InnoDB
engine and this engine must be the default engine. - Must support the
utf8mb4
charset. - Must support the
utf8mb4_unicode_520_ci
collation. - Must support maximum index size of no less than 2048 bytes. The default maximum index size for the InnoDB engine is 3072 bytes on:
- Must support ANSI standard time behaviours. See ANSI standard time behaviours.
We generally perform integration testing against the latest supported version of MySQL and MariaDB, and the latest supported version of MariaDB is generally the recommended version for new installations.
Specific Notes
InnoDB Large Prefixes
This can be configured in the MySQL configuration file by setting the innodb_large_prefix
value to on.
According to the Oracle documentation this is the default behaviour in
MySQL 5.7 and it can't be
turned off in MySQL 8.0 or in MariaDB 10.3 and later.
[mysqld]
innodb_large_prefix = ON
ANSI standard time behaviours
This can be configured in the MySQL configuration file by setting the explicit_defaults_for_timestamp
value to on.
According to the Oracle documentation this is the default behaviour in
MySQL 5.7
and MySQL 8.0.
This is however not the default behaviour in
MariaDB before 10.10.
[mysqld]
explicit_defaults_for_timestamp = ON
Upgrades
MySQL and MariaDB have several standard databases named mysql
, sys
, and performance_schema
. These databases
are outside the scope for an application to manage. These engines may not prevent you using a version of MySQL or
MariaDB with these databases which is incompatible.
It is your responsibility to ensure these tables are upgraded as per the mysql_upgrade
documentation for MySQL and
documentation for MariaDB. Some containers or some versions of MySQL and
MariaDB may do this for you, but this is out of scope for us to support.
Vendor Supported Versions
MariaDB Vendor Supported Versions
See the MariaDB Server Releases for information on the versions and platforms that are currently supported by this vendor.
MySQL Vendor Supported Versions
See the MySQL Supported Platforms for information on the versions and platforms that are currently supported by this vendor.