DB - Database connections

The following configuration variables can be used to configure settings for the connection to the database:

additionalQueryRestrictions

additionalQueryRestrictions
Type
array
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['additionalQueryRestrictions']
Default
[]

It is possible to add additional query restrictions by adding class names as key to $GLOBALS['TYPO3_CONF_VARS']['DB']['additionalQueryRestrictions'] . Have a look into the chapter Custom restrictions for details.

Connections

Connections
Type
array
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']

One or more database connections can be configured under the Connections key. There must be at least one configuration with the Default key, in which the default database is configured, for example:

config/system/settings.php | typo3conf/system/settings.php
'Connections' => [
    'Default' => [
        'charset' => 'utf8mb4',
        'driver' => 'mysqli',
        'dbname' => 'typo3_database',
        'host' => '127.0.0.1',
        'password' => 'typo3',
        'port' => 3306,
        'user' => 'typo3',
    ],
]
Copied!

It is possible to swap out tables from the default database and use a specific setup (for instance, for caching). For example, the following snippet could be used to swap the be_sessions table to another database or even another database server:

config/system/settings.php | typo3conf/system/settings.php
'Connections' => [
    'Default' => [
        'charset' => 'utf8mb4',
        'driver' => 'mysqli',
        'dbname' => 'typo3_database',
        'host' => '127.0.0.1',
        'password' => '***',
        'port' => 3306,
        'user' => 'typo3',
    ],
    'Sessions' => [
        'charset' => 'utf8mb4',
        'driver' => 'mysqli',
        'dbname' => 'sessions_dbname',
        'host' => 'sessions_host',
        'password' => '***',
        'port' => 3306,
        'user' => 'some_user',
    ],
],
'TableMapping' => [
    'be_sessions' => 'Sessions',
]
Copied!

charset

charset
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['charset']
Default
'utf8'

The charset used when connecting to the database. Can be used with MySQL/MariaDB and PostgreSQL.

dbname

dbname
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['dbname']

Name of the database/schema to connect to. Can be used with MySQL/MariaDB and PostgreSQL.

defaultTableOptions

defaultTableOptions
Type
array
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['defaultTableOptions']

Defines the charset and collation options when new tables are created (MySQL/MariaDB only):

config/system/settings.php | typo3conf/system/settings.php
'Connections' => [
    'Default' => [
        'driver' => 'mysqli',
        // ...
        'charset' => 'utf8mb4',
        'defaultTableOptions' => [
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
        ],
    ],
]
Copied!

For new installations the above is the default.

driver

driver
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['driver']

The built-in driver implementation to use. The following drivers are currently available:

mysqli
A MySQL/MariaDB driver that uses the mysqli extension.
pdo_mysql
A MySQL/MariaDB driver that uses the pdo_mysql PDO extension.
pdo_pgsql
A PostgreSQL driver that uses the pdo_pgsql PDO extension.
pdo_sqlite
An SQLite driver that uses the pdo_sqlite PDO extension.

host

host
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['host']

Hostname or IP address of the database to connect to. Can be used with MySQL/MariaDB and PostgreSQL.

password

password
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['password']

Password to use when connecting to the database.

path

path
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['path']

The filesystem path to the SQLite database file.

port

port
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['port']

Port of the database to connect to. Can be used with MySQL/MariaDB and PostgreSQL.

tableoptions

tableoptions
Type
array
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['tableoptions']
Default
[]

Deprecated since version 13.4

Since TYPO3 v11 the tableoptions keys were silently migrated to defaultTableOptions, which is the proper Doctrine DBAL connection option for MariaDB and MySQL.

Furthermore, Doctrine DBAL 3.x switched from using the array key collate to collation, ignoring the old array key with Doctrine DBAL 4.x. This was silently migrated by TYPO3, too.

These silent migrations are now deprecated in favor of using the final array keys.

Migration:

Review settings.php and additional.php and adapt the deprecated configuration by renaming affected array keys.

 'Connections' => [
     'Default' => [
-        'tableoptions' => [
+        'defaultTableOptions' => [
-            'collate' => 'utf8mb4_unicode_ci',
+            'collation' => 'utf8mb4_unicode_ci',
         ],
     ],
 ],
Copied!

unix_socket

unix_socket
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['unix_socket']

Name of the socket used to connect to the database. Can be used with MySQL/MariaDB.

user

user
Type
string
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'][<connection_name>]['user']

Username to use when connecting to the database.

TableMapping

TableMapping
Type
array
Path
$GLOBALS['TYPO3_CONF_VARS']['DB']['TableMapping']
Default
[]

When a TYPO3 table is swapped to another database (either on the same host or another host) this table must be mapped to the other database.

For example, the be_sessions table should be swapped to another database:

config/system/settings.php | typo3conf/system/settings.php
'Connections' => [
    'Default' => [
        // ...
    ],
    'Sessions' => [
        'charset' => 'utf8mb4',
        'driver' => 'mysqli',
        'dbname' => 'sessions_dbname',
        'host' => 'sessions_host',
        'password' => '***',
        'port' => 3306,
        'user' => 'some_user',
    ],
],
'TableMapping' => [
    'be_sessions' => 'Sessions',
]
Copied!