ARTIFACTORY: Guide to Artifactory Metadata Service database configuration

Products
Frog_Artifactory
Content Type
Installation_Setup
AuthorFullName__c
Piyush Kulkarni
articleNumber
000006724
FirstPublishedDate
2025-12-25T08:11:26Z
lastModifiedDate
2025-12-25

ARTIFACTORY: Guide to Artifactory Metadata Service database configuration

The Metadata Service (jfmd) is a dedicated microservice introduced in Artifactory 7.x responsible for calculating, storing, and retrieving package metadata (Maven, npm, Docker layers, etc.).

The core Artifactory application is built on Java and connects to the database using standard JDBC drivers (such as jdbc:postgresql://). In contrast, the Metadata Service is a Go-based microservice that utilizes native Go drivers (such as postgres://)

By default, Artifactory automatically translates your shared JDBC configuration into a Go-compatible connection string at startup. However, in complex network environments (Oracle RAC, Custom SSL, Named Instances), this automatic translation might fail, requiring you to provide an explicit Go-style connection string.


Strategy A: Shared Configuration (Recommended)

For 95% of installations (Standard PostgreSQL, MySQL, MariaDB), rely on the internal translator. You do not need a specific metadata block.

Under $JFROG_HOME/artifactory/var/etc/system.yaml
shared:
  database:
    type: postgresql
    driver: org.postgresql.Driver
    url: "jdbc:postgresql://localhost:5432/artifactorydb"
    username: "artifactory"
    password: "password"

Strategy B: The "Go" Override (Advanced) 

If you encounter driver translation errors in metadata-service.log, you must bypass the translator by providing a raw Go connection string using the go: prefix.

Security Warning:

Do not hardcode passwords here. Use the ${shared.database.password} variable to reference the encrypted password from the main config.



1. PostgreSQL Override (Key-Value Style)  Best for handling special characters in passwords or custom SSL paths.
metadata:
  database:
    url: "go:user='${shared.database.username}' password='${shared.database.password}' dbname=artifactorydb host=localhost port=5432 sslmode=disable"

2. Oracle Override (URI Style) Required for Oracle RAC, Service Names, or LDAP.
metadata:
  database:
    url: "go:oracle://artifactory:${shared.database.password}@//oracle-host:1521/ServiceName"

3. MSSQL / SQL Server Override Required for Named Instances or resolving SSL Trust errors
metadata:
  database:
      url: "go:sqlserver://artifactory:${shared.database.password}@mssql-host:1433?database=artifactorydb&trustServerCertificate=true"

If you encounter further issues, the following documentation is a helpful reference for specific errors and metadata service configurations:

Troubleshooting the Metadata Service

MSSQL SSL Handshake Errors

PostgreSQL TLS configuration