## Database Setup

During the init phase of Gerrit you will need to specify which database to use.

### H2

If you choose H2, Gerrit will automatically set up the embedded H2 database as backend so no set up or configuration is necessary.

Using the embedded H2 database is the easiest way to get a Gerrit site up and running, making it ideal for proof of concepts or small team servers. On the flip side, H2 is not the recommended option for large corporate installations. This is because there is no easy way to interact with the database while Gerrit is offline, it’s not easy to backup the data, and it’s not possible to set up H2 in a load balanced/hotswap configuration.

If this option interests you, you might want to consider the quick guide.

### Apache Derby

If Derby is selected, Gerrit will automatically set up the embedded Derby database as backend so no set up or configuration is necessary.

Currently only support for embedded mode is added. There are two other deployment options for Apache Derby that can be added later:

- Derby Network Server (standalone mode)

- Embedded Server (hybrid mode)

### PostgreSQL

This option is more complicated than the H2 option but is recommended for larger installations. It’s the database backend with the largest userbase in the Gerrit community.

Create a user for the web application within PostgreSQL, assign it a password, create a database to store the metadata, and grant the user full rights on the newly created database:

      $ createuser --username=postgres -RDIElPS gerrit2
      $ createdb --username=postgres -E UTF-8 -O gerrit2 reviewdb

Visit PostgreSQL’s documentation for further information regarding using PostgreSQL.

### MySQL

This option is also more complicated than the H2 option. Just as with PostgreSQL it’s also recommended for larger installations.

Create a user for the web application within the database, assign it a password, create a database, and give the newly created user full rights on it:

      mysql

      CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret';
      CREATE DATABASE reviewdb;
      GRANT ALL ON reviewdb.* TO 'gerrit2'@'localhost';
      FLUSH PRIVILEGES;

Visit MySQL’s documentation for further information regarding using MySQL.

### Oracle

PostgreSQL or H2 is the recommended database for Gerrit Code Review. Oracle is supported for environments where running on an existing Oracle installation simplifies administrative overheads, such as database backups.

Create a user for the web application within sqlplus, assign it a password, and grant the user full rights on the newly created database:

      SQL> create user gerrit2 identified by secret_password default tablespace users;
      SQL> grant connect, resources to gerrit2;

JDBC driver ojdbc6.jar must be obtained from your Oracle distribution. Gerrit initialization process tries to copy it from a known location:

    /u01/app/oracle/product/11.2.0/xe/jdbc/lib/ojdbc6.jar

If this file can not be located at this place, then the alternative location can be provided.

Instance name is the Oracle SID. Sample database section in $site_path/etc/gerrit.config:

    [database]
            type = oracle
            instance = xe
            hostname = localhost
            username = gerrit2
            port = 1521

Sample database section in $site_path/etc/secure.config:

    [database]
            password = secret_pasword

### SAP MaxDB

SAP MaxDB is a supported database for running Gerrit Code Review. However it is recommended only for environments where you intend to run Gerrit on an existing MaxDB installation to reduce administrative overhead.

In the MaxDB studio or using the SQLCLI command line interface create a user 'gerrit2' with the user class 'RESOURCE' and a password <secret password>. This will also create an associated schema on the database.

To run Gerrit on MaxDB, you need to obtain the MaxDB JDBC driver. It can be found in your MaxDB installation at the following location:

- on Windows 64bit at "C:\Program Files\sdb\MaxDB\runtime\jar\sapdbc.jar"

- on Linux at "/opt/sdb/MaxDB/runtime/jar/sapdbc.jar"

It needs to be stored in the 'lib' folder of the review site.

In the following sample database section it is assumed that the database name is 'reviewdb' and the database is installed on localhost:

In $site_path/etc/gerrit.config:

    [database]
            type = maxdb
            database = reviewdb
            hostname = localhost
            username = gerrit2

In $site_path/etc/secure.config:

    [database]
            password = <secret password>

Visit SAP MaxDB’s documentation for further information regarding using SAP MaxDB.

### DB2

IBM DB2 is a supported database for running Gerrit Code Review. However it is recommended only for environments where you intend to run Gerrit on an existing DB2 installation to reduce administrative overhead.

Create a system wide user for the Gerrit application, and grant the user full rights on the newly created database:

      db2 => create database gerrit
      db2 => connect to gerrit
      db2 => grant connect,accessctrl,dataaccess,dbadm,secadm on database to gerrit2;

JDBC driver db2jcc4.jar and db2jcc_license_cu.jar must be obtained from your DB2 distribution. Gerrit initialization process tries to copy it from a known location:

    /opt/ibm/db2/V10.5/java/db2jcc4.jar
    /opt/ibm/db2/V10.5/java/db2jcc_license_cu.jar

If these files cannot be located at this place, then an alternative location can be provided during init step execution.

Sample database section in $site_path/etc/gerrit.config:

    [database]
            type = db2
            database = gerrit
            hostname = localhost
            username = gerrit2
            port = 50001

Sample database section in $site_path/etc/secure.config:

    [database]
            password = secret_pasword

### SAP HANA

SAP HANA is a supported database for running Gerrit Code Review. However it is recommended only for environments where you intend to run Gerrit on an existing HANA installation to reduce administrative overhead.

In the HANA studio or the SAP HANA Web-based Development Workbench create a user 'GERRIT2' with the role 'RESTRICTED_USER_JDBC_ACCESS' and a password <secret password>. This will also create an associated schema on the database. As this user would be required to change the password upon first login you might want to to disable the password lifetime check by executing 'ALTER USER GERRIT2 DISABLE PASSWORD LIFETIME'.

To run Gerrit on HANA, you need to obtain the HANA JDBC driver. It can be found as described here. It needs to be stored in the 'lib' folder of the review site.

In the following sample database section it is assumed that HANA is running on the host 'hana.host' with the instance number 00 where a schema/user GERRIT2 was created:

In $site_path/etc/gerrit.config:

    [database]
            type = hana
            instance = 00
            hostname = hana.host
            username = GERRIT2

In $site_path/etc/secure.config:

    [database]
            password = <secret password>

Visit SAP HANA’s documentation for further information regarding using SAP HANA.

Part of Gerrit Code Review