Accessing Bitbucket Server's H2 embedded database
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
While the H2 database is not supported for production environments, sometimes admins will need access for testing purposes or you may need to run some diagnostics on a Bitbucket mirror's H2 database.
Solution
Before accessing or modifying the H2 embedded database, it's always recommended to first make a backup of $BITBUCKET_HOME/shared/data/db.h2.db
- Stop Bitbucket Server
- Login to the server as the user that runs Bitbucket Server
Run the following command which will open a console connection to the database:
java -cp <BITBUCKET_INSTALLATION>/app/WEB-INF/lib/h2-1.3.176.jar org.h2.tools.Shell
Update the path above to reflect where Bitbucket Server is installed
When prompted for the URL enter:
jdbc:h2:file://<BITBUCKET_HOME>/shared/data/db;DB_CLOSE_ON_EXIT=TRUE
Update the path above to reflect the location of the Bitbucket Home directory- Press enter to select default (org.h2.Driver) when asked which driver to use
- Enter sa for the user
- Press enter twice when prompted for the password (no password is required)
If successful, you'll be prompted with sql>
and can enter any SQL commands required.
Command Line Options
It is also possible to combine the steps to connect to the database in a single command:
java -cp <BITBUCKET_INSTALLATION>/app/WEB-INF/lib/h2-1.3.176.jar org.h2.tools.Shell -url "jdbc:h2:file://<BITBUCKET_HOME>/shared/data/db;DB_CLOSE_ON_EXIT=TRUE" -driver org.h2.Driver -user sa
To connect and then run a query, pass the -sql
option and the SQL query, for example:
java -cp <BITBUCKET_INSTALLATION>/app/WEB-INF/lib/h2-1.3.176.jar org.h2.tools.Shell -url "jdbc:h2:file://<BITBUCKET_HOME>/shared/data/db;DB_CLOSE_ON_EXIT=TRUE" -driver org.h2.Driver -user sa -sql "SELECT * FROM app_property;"
Accessing the H2 database from a browser
For easier navigation of the H2 database, use the Server mode using the command below.
java -cp <BITBUCKET_INSTALLATION>/app/WEB-INF/lib/h2*.jar org.h2.tools.Server
The H2 console can be accessible using http://localhost:8082. Enter the JDBC URL and click on the Connect button.