stage | group | info | type |
---|---|---|---|
Verify |
Runner |
To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers |
reference |
Many applications depend on MySQL as their database, and you may need it for your tests to run.
If you want to use a MySQL container, you can use GitLab Runner with the Docker executor.
-
Create variables for your MySQL database and password by going to Settings > CI/CD, expanding Variables, and clicking Add Variable.
This example uses
$MYSQL_DB
and$MYSQL_PASS
as the keys. -
To specify a MySQL image, add the following to your
.gitlab-ci.yml
file:services: - mysql:latest
- You can use any Docker image available on Docker Hub.
For example, to use MySQL 5.5, use
mysql:5.5
. - The
mysql
image can accept environment variables. For more information, view the Docker Hub documentation.
- You can use any Docker image available on Docker Hub.
For example, to use MySQL 5.5, use
-
To include the database name and password, add the following to your
.gitlab-ci.yml
file:variables: # Configure mysql environment variables (https://hub.docker.com/_/mysql/) MYSQL_DATABASE: $MYSQL_DB MYSQL_ROOT_PASSWORD: $MYSQL_PASS
The MySQL container uses
MYSQL_DATABASE
andMYSQL_ROOT_PASSWORD
to connect to the database. Pass these values by using variables ($MYSQL_DB
and$MYSQL_PASS
), rather than calling them directly. -
Configure your application to use the database, for example:
Host: mysql User: runner Password: <your_mysql_password> Database: <your_mysql_database>
You can also use MySQL on manually-configured servers that use GitLab Runner with the Shell executor.
-
Install the MySQL server:
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
-
Choose a MySQL root password and type it twice when asked.
NOTE: Note: As a security measure, you can run
mysql_secure_installation
to remove anonymous users, drop the test database, and disable remote logins by the root user. -
Create a user by logging in to MySQL as root:
mysql -u root -p
-
Create a user (in this case,
runner
) that will be used by your application. Change$password
in the command to a strong password.At the
mysql>
prompt, type:CREATE USER 'runner'@'localhost' IDENTIFIED BY '$password';
-
Create the database:
CREATE DATABASE IF NOT EXISTS `<your_mysql_database>` DEFAULT CHARACTER SET `utf8` \ COLLATE `utf8_unicode_ci`;
-
Grant the necessary permissions on the database:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `<your_mysql_database>`.* TO 'runner'@'localhost';
-
If all went well, you can quit the database session:
\q
-
Connect to the newly-created database to check that everything is in place:
mysql -u runner -p -D <your_mysql_database>
-
Configure your application to use the database, for example:
Host: localhost User: runner Password: $password Database: <your_mysql_database>
To view a MySQL example, create a fork of this sample project. This project uses publicly-available shared runners on GitLab.com. Update the README.md file, commit your changes, and view the CI/CD pipeline to see it in action.