Creating the Artifactory MariaDB Database
Supported MySQL Versions
Artifactory supports MariaDB v10.2.9 and above.
Supported JDBC Driver Versions
Artifactory supports the MariaDB Java Connector versions 2.1.2 and above.
We recommend using the latest JDBC driver version available when working with the MariaDB Java Connector. MariaDB also states that the MySQL Java Connector should "work untouched" with a MariaDB server, however, please note that our tests were done using the MariaDB Java Connector, and not the MySQL Connector.
Artifactory provides a script that will execute the SQL commands you need to create your MariaDB database.
The script can be found in
$ARTIFACTORY_HOME/misc/db/createdb/createdb_mariadb.sql and is displayed below.
You should review the script and modify it as needed to correspond to your specific environment.
If you are running MariaDB database on a Docker container please use the following:
CREATE DATABASE artdb CHARACTER SET utf8 COLLATE utf8_bin; GRANT ALL on artdb.* TO 'artifactory'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
Selecting a Case-Sensitive Collation
While MariaDB Database Server is not case-sensitive by default, it is important to select a case-sensitive collation because Artifactory is case-sensitive.
For example, in the
createdb.sql script above COLLATE is set to "
We recommend providing Artifactory with full privileges on the database.
Increasing MariaDB Default Packet Size
Since some data files (builds, configurations etc.) are stored in MariaDB, it is extremely important to increase the maximum allowed packet size used by MariaDB to avoid errors related to large packets.
To learn more, please refer to Packet Too Large in the MariaDB.
We recommend changing this parameter in the
/etc/my.cnf file as follows:
/etc/my.cnf Absolute Path
/etc/my.cnf does not already exist, you need to create it under the absolute path and not under
After modifying the maximum allowed packed size you need to restart MariaDB.
You can also use the command line
You can also change the
max_allowed_packet variable on the MariaDB command line as in the following example:
Note, however, that upon a restart, the value of the
max_allowed_packet variable will be read from the /etc/my.cnf file and revert to the value in that file as described above.
Tuning MariaDB for Artifactory
When using Artifactory with MariaDB it is recommended to use the InnoDB engine with the following tuning parameters configured in the
Note that both the XtraDB and InnoDB engines are compatible with the various InnoDB system variables.
After tuning MariaDB to work with Artifactory, you need to restart MariaDB.
Configuring Artifactory to use MariaDB
(If you do not have this file you can take it from the standalone zip distribution or directly from the JFrog domain). For a full explanation on the contents of this file please refer to The Bundled Storage Configurations.
- Adjust the connection definitions in the
$ARTIFACTORY_HOME/etc/db.propertiesfile to match the attributes of the Artifactory database you created.
You must configure the database URL and username/password to use. The schema and tables are created first time Artifactory is run using the new database.
Download the MariaDB JDBC driver (available from the MySQL website) and copy the
mariadb-java-client-<version>.jarfile into the server's shared lib directory.
$TOMCAT_HOME/libwhen installed as a service or
$ARTIFACTORY_HOME/tomcat/libin the standalone version.
Make sure your driver has the same permissions as the rest of the files in the shared lib directory.
- Start Artifactory.
Storing BLOBs inside MariaDB
The suggested (and recommended) configuration stores all artifact information in MariaDB while the artifact binary data is stored on the file system (under
While it is not recommended, it is possible to store BLOBs inside MariaDB provided that the typical BLOB size is relatively small. Storing large BLOBs in MariaDB can cause memory issuesbecause MariaDB buffers BLOBs rather than streaming them (please refer to MySQL Bug #15089) and may result in
OutOfMemory errors with large binaries depending on your JVM heap size.
To store BLOBs in MariaDB, you will need to configure the Filestore with the Full-DB Binary Provider and change
max_allowed_packet to be higher than the maximum artifact size you intend to store in Artifactory.
Lightweight Ping Query
The MariaDB Connector/J does not support the special lightweight "/* ping */" query. JDBC Connection Pools perform regular validity checks on connections in the pool, which use an SQL validation query. Both MySql and MariaDB servers do support the “/* ping */” query, but the MariaDB Connector/J wraps the query as if it was a standard SQL query and transforms it into a “SET STATEMENT...” query, which is illegal in terms of syntax as far as the server is concerned. For this reason, Artifactory uses a generic “SELECT 1” as a validation query for pooled connections when MariaDB is used as a database type. The MySql Connector has no such limitation, and supports the “/* ping */” query.