Databases in the official order
This page is for product managers who decide which databases a hosting offer includes, and for system administrators who will run them. It answers: which databases Exponential 6.0.x supports, in which order the project recommends them, how they compare from a host's point of view, and how to choose what to offer. The support statement and every detail are in Database support; the operator's chapter is chapter 9, Databases.
Contents
- The official order
- Side by side
- What each one means for a host
- Choosing what to offer
- Things every database has in common
- Checklist
- Related pages
The official order
Supported databases (Exponential 6.0.x), in order of preference: 1. SQLite 3 (the default) · 2. PostgreSQL · 3. MongoDB · 4. MariaDB · 5. Oracle · 6. MySQL. Microsoft SQL Server is known to be possible with additional work at this time.
All six have a driver in the kernel or in a shipped extension, an entry in the setup wizard and a path in the command-line installers (Database support). The order is the order of recommendation for new sites; it does not mean the later ones work less well. Microsoft SQL Server has no driver in 6.0.x (Microsoft SQL Server status).
Use this order wherever your own material lists databases: plan descriptions, order forms, support articles.
Side by side
| 1. SQLite 3 | 2. PostgreSQL | 3. MongoDB | 4. MariaDB | 5. Oracle | 6. MySQL | |
|---|---|---|---|---|---|---|
| Database server to run | none (one file) | yes | yes | yes | yes | yes |
DatabaseImplementation | sqlite3 | ezpostgresql | mongodb | ezmysqli | ezoracle | ezmysqli |
| PHP extension | sqlite3 | pgsql | mongodb + library mongodb/mongodb | mysqli | oci8 | mysqli |
exp:install --db= | sqlite (default) | pgsql | mongodb | mariadb | oracle | mysql |
| Several web servers on one database | no | yes | yes | yes | yes | yes |
| Practical minimum | library 3.33 | 13 | server 6.0, PHP 8.2 | a release the vendor supports | 19c | a release the vendor supports |
| Character set | UTF-8 | UTF8 | UTF-8 (BSON) | utf8mb4 | AL32UTF8 | utf8mb4 |
| Tested in the project's CI | driver unit tests | yes (PostgreSQL 15) | adapter unit tests | no (covered by the MySQL job, same driver) | no | yes (MySQL 8.0) |
| Backup tool | sqlite3 .backup | pg_dump | mongodump | mariadb-dump | ext:ezoracle:datapump, expdp | mysqldump |
Sources: At a glance, versions and test coverage.
What each one means for a host
| Database | For a host | Page |
|---|---|---|
| 1. SQLite 3 | Nothing to run or account for: the database lives in the site's own var/storage/sqlite3/. Fits every plan where one machine serves the site, including shared hosting. Backups are a file operation, but never a plain copy of a file in use. | SQLite for hosts |
| 2. PostgreSQL | The recommended database server. One database per site, with the site's user as its owner; pgcrypto must be available. | PostgreSQL for hosts |
| 3. MongoDB | For customers standardized on MongoDB. Needs PHP 8.2, a Composer library, a user in the site's database and a set of indexes; has documented limits. | MongoDB for hosts |
| 4. MariaDB | The MySQL-compatible server the project prefers; the usual database of hosting panels. | MariaDB for hosts |
| 5. Oracle | For customers who run Oracle. Needs oci8 built against an Oracle client; usually the customer's own database. | Oracle for hosts |
| 6. MySQL | Supported and tested in CI on the same driver as MariaDB; last in the order because the project recommends the others first for new sites. | MySQL for hosts |
Choosing what to offer
The project does not prescribe a hosting offer. These questions, taken from the decision table of Choosing hosting, database and operating system, decide it:
| Question | If yes |
|---|---|
| Does more than one machine have to write the site's database? | A database server, PostgreSQL first; not SQLite |
| Is the plan a single machine, shared or not? | SQLite 3 covers it with no database server to run |
| Do customers bring their own MongoDB or Oracle? | Offer that database as an option, with its page's requirements |
| Does your panel only provision MariaDB or MySQL accounts? | Offer MariaDB, and SQLite where the panel allows a writable directory |
| Do you run a database service already? | Offer the engine it runs, if it is among the six |
Typical offers a host can build from this:
- Entry plans: SQLite 3 only. No database account to provision, nothing to tune, backups per site.
- Business plans: SQLite 3 or PostgreSQL, with MariaDB where the panel provisions it.
- Enterprise or dedicated plans: any of the six, including the customer's own MongoDB or Oracle.
Tip
Whatever you offer, write the engine of each customer site into your inventory. Backups, restores, upgrades and support all differ per engine, and the update files of an upgrade are chosen by the engine the site runs on now (moving a site).
Things every database has in common
The connection is configured in
settings/site.ini, block[DatabaseSettings], overridden insettings/override/site.ini.append.php(written by the installers). Never put a real password into a file under version control.The installers do not create a database server's database or user. Create them first; each page shows how.
exp:installreads the password from the environment variableEXP_INSTALL_DB_PASSWORD, so it stays out of the shell history and the process list.After a settings change, clear the INI cache and restart Velocity's workers:
php bin/php/ezcache.php --clear-tag=ini --allow-root-user php bin/php/console exp:velocity restart --allow-root-userWhich database is a site using?
php bin/php/console exp:ini get site.ini/DatabaseSettings/DatabaseImplementation --allow-root-useror Setup > System information, the Database card.
A complete backup is the database and the files:
var/storage,settings/overrideandsettings/siteaccess(Backup and restore).Moving between engines is possible; see Changing the database engine.
Checklist
- To do: The plan's databases are listed in the official order.
- To do: The PHP extension of each offered database is installed in the web and the command line PHP.
- To do: A procedure exists to create a database and a user per site (servers only).
- To do: Backups per engine are in place and tested (Database backups per engine).
- To do: The engine of every customer site is recorded.
Related pages
- Database support and chapter 9, Databases
- SQLite, PostgreSQL, MongoDB, MariaDB, Oracle, MySQL for hosts
- Microsoft SQL Server status
- Databases and users in control panels
- Operating system support
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.