All of Fedora's content and metadata are stored on disk in an OCFL storage root. For performance reasons, Fedora maintains a cache of system and user metadata in a rebuildable database. For quickly spinning up Fedora in a testing / experimental context, a default H2 database is available by default. However, for production installations, it is recommended to use a MariaDB, MySQL or PostgreSQL database. Below are the steps to use MySQL or PostgreSQL, as well as Docker instructions if you choose to run your database in a Docker container.
Table of Contents |
---|
Native Database Setup
MariaDB
- Install an instance of MariaDB and create a database called
fcrepo
and a user account that can access it - Run Fedora with the following properties defined either in your properties file or in your
JAVA_OPTS
:
Code Block |
---|
fcrepo.db.url=jdbc:mariadb://localhost:3306/fcrepo
fcrepo.db.user=<username>
fcrepo.db.pw=<password> |
Note, the fcrepo
database must be manually created, but the tables will be automatically created.
PostgreSQL
- Install an instance of PostgreSQL and create a database called
fcrepo
and a user account that can access it - Run Fedora with the following properties defined either in your properties file or in your
JAVA_OPTS:
Code Block |
---|
fcrepo.db.url=jdbc:postgresql://localhost:5432/fcrepo
fcrepo.db.user=<username>
fcrepo.db.pw=<password> |
Note, the fcrepo
database must be manually created, but the tables will be automatically created.
MySQL
- Install an instance of MySQL and create a database called
fcrepo
and a user account that can access it - Run Fedora with the following properties defined either in your properties file or in your
JAVA_OPTS:
Code Block |
---|
fcrepo.db.url=jdbc:mysql://localhost:3306/fcrepo
fcrepo.db.user=<username>
fcrepo.db.pw=<password> |
Note, the fcrepo
database must be manually created, but the tables will be automatically created.
Database Initialization
MySQL and MariaDB
To create a new database and user in MySQL, assuming a username of user1
and a password of xyz
:
Code Block |
---|
$ mysql -u root -p
> create database fcrepo;
> create user 'user1'@'localhost' IDENTIFIED BY 'xyz';
> GRANT ALL PRIVILEGES ON fcrepo.* to 'user1'@'localhost';
> \q |
PostgreSQL
To create a new database and user in PostgreSQL, assuming a username of user1
and a password of xyz
:
Code Block |
---|
$ sudo -u postgres psql
> create database fcrepo;
> create user user1;
> alter user user1 password 'xyz';
> grant all privileges on database fcrepo to user1;
> \q |
Docker-based Database Setup
The following instructions detail how to run your database in a Docker container.
MariaDB
The following instructions use the database username of "fcrepo-user" and password of "fcrepo-pw". You will want to change these to something more secure.
...
No Format |
---|
-Dfcrepo.db.url=jdbc:mariadb://localhost:3306/fcrepo -Dfcrepo.db.user=fcrepo-user -Dfcrepo.db.password=fcrepo-pw |
PostgreSQL
The following instructions use the database username of "fcrepo-user" and password of "fcrepo-pw". You will want to change these to something more secure.
...
To connect via the command line with the above database, the following command may be used:
No Format |
---|
docker exec -it f6-postgres psql -U fcrepo-user -d fcrepo |
In order for Fedora to connect with a database configured as above, the Fedora should be started with the following system properties:
No Format |
---|
-Dfcrepo.db.url=jdbc:postgresql://localhost:5432/fcrepo -Dfcrepo.db.user=fcrepo-user -Dfcrepo.db.password=fcrepo-pw |
MySQL
The following instructions use the database username of "fcrepo-user" and password of "fcrepo-pw". You will want to change these to something more secure.
...
No Format |
---|
-Dfcrepo.db.url=jdbc:mysql://localhost:3306/fcrepo -Dfcrepo.db.user=fcrepo-user -Dfcrepo.db.password=fcrepo-pw |
Native Database Setup
MariaDB
- Install an instance of MariaDB and create a database called
fcrepo
and a user account that can access it - Run Fedora with the following
JAVA_OPTS
:
Code Block |
---|
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.url=jdbc:mariadb://localhost:3306/fcrepo"
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.user=<username>"
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.pw=<password>" |
Note, the fcrepo
database must be manually created, but the tables will be automatically created.
PostgreSQL
- Install an instance of PostgreSQL and create a database called
fcrepo
and a user account that can access it - Run Fedora with the following
JAVA_OPTS
:
Code Block |
---|
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.url=jdbc:postgresql://localhost:5432/fcrepo"
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.user=<username>"
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.pw=<password>" |
Note, the fcrepo
database must be manually created, but the tables will be automatically created.
MySQL
- Install an instance of MySQL and create a database called
fcrepo
and a user account that can access it - Run Fedora with the following
JAVA_OPTS
:
Code Block |
---|
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.url=jdbc:mysql://localhost:3306/fcrepo"
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.user=<username>"
JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.db.pw=<password>" |
Note, the fcrepo
database must be manually created, but the tables will be automatically created.
Database Initialization
MySQL and MariaDB
To create a new database and user in MySQL, assuming a username of user1
and a password of xyz
:
Code Block |
---|
$ mysql -u root -p
> create database fcrepo;
> create user 'user1'@'localhost' IDENTIFIED BY 'xyz';
> GRANT ALL PRIVILEGES ON fcrepo.* to 'user1'@'localhost';
> \q |
PostgreSQL
To create a new database and user in PostgreSQL, assuming a username of user1
and a password of xyz
:
Code Block |
---|
$ sudo -u postgres psql
> create database fcrepo;
> create user user1;
> alter user user1 password 'xyz';
> grant all privileges on database fcrepo to user1;
> \q |