Database MySQL
Note
We do not recommend using MySQL due to various issues. For example, case (in)sensitivity and problems that suggested fixes have.
MySQL
# Install the database packages
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
# Ensure you have MySQL version 5.5.14 or later
mysql --version
# Pick a MySQL root password (can be anything), type it and press enter
# Retype the MySQL root password and press enter
# Secure your installation
sudo mysql_secure_installation
# Login to MySQL
mysql -u root -p
# Type the MySQL root password
# Create a user for GitLab
# do not type the 'mysql>', this is part of the prompt
# change $password in the command below to a real password you pick
mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password';
# Ensure you can use the InnoDB engine which is necessary to support long indexes
# If this fails, check your MySQL config files (e.g. `/etc/mysql/*.cnf`, `/etc/mysql/conf.d/*`) for the setting "innodb = off"
mysql> SET storage_engine=INNODB;
# Create the GitLab production database
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
# Grant the GitLab user necessary permissions on the database
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES, REFERENCES ON `gitlabhq_production`.* TO 'git'@'localhost';
# Quit the database session
mysql> \q
# Try connecting to the new database with the new user
sudo -u git -H mysql -u git -p -D gitlabhq_production
# Type the password you replaced $password with earlier
# You should now see a 'mysql>' prompt
# Quit the database session
mysql> \q
# You are done installing the database and can go back to the rest of the installation.
MySQL strings limits
After installation or upgrade, remember to run the add_limits_mysql
Rake task:
Omnibus GitLab installations
sudo gitlab-rake add_limits_mysql
Installations from source
bundle exec rake add_limits_mysql RAILS_ENV=production
The text
type in MySQL has a different size limit than the text
type in
PostgreSQL. In MySQL text
columns are limited to ~65kB, whereas in PostgreSQL
text
columns are limited up to ~1GB!
The add_limits_mysql
Rake task converts some important text
columns in the
GitLab database to longtext
columns, which can persist values of up to 4GB
(sometimes less if the value contains multibyte characters).
Details can be found in the PostgreSQL and MySQL manuals.