summaryrefslogtreecommitdiff
path: root/doc/ci/services/mysql.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ci/services/mysql.md')
-rw-r--r--doc/ci/services/mysql.md72
1 files changed, 72 insertions, 0 deletions
diff --git a/doc/ci/services/mysql.md b/doc/ci/services/mysql.md
new file mode 100644
index 00000000000..3155af6b3e1
--- /dev/null
+++ b/doc/ci/services/mysql.md
@@ -0,0 +1,72 @@
+## Using MySQL
+
+It's possible to use MySQL database test your apps during builds.
+
+### Use MySQL with Docker executor
+
+If you are using our Docker integration you basically have everything already.
+
+1. Add this to your `.gitlab-ci.yml`:
+
+ services:
+ - mysql
+
+ variables:
+ # Configure mysql service (https://hub.docker.com/_/mysql/)
+ MYSQL_DATABASE: hello_world_test
+ MYSQL_ROOT_PASSWORD: mysql
+
+2. Configure your application to use the database:
+
+ Host: mysql
+ User: root
+ Password: mysql
+ Database: hello_world_test
+
+3. You can also use any other available on [DockerHub](https://hub.docker.com/_/mysql/). For example: `mysql:5.5`.
+
+Example: https://gitlab.com/gitlab-examples/mysql/blob/master/.gitlab-ci.yml
+
+### Use MySQL with Shell executor
+
+It's possible to use MySQL on manually configured servers that are using GitLab Runner with Shell executor.
+
+1. First install the MySQL server:
+
+ sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
+
+ # Pick a MySQL root password (can be anything), type it and press enter
+ # Retype the MySQL root password and press enter
+
+2. Create an user:
+
+ mysql -u root -p
+
+ # Create a user which will be used by your apps
+ # 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 'runner'@'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 database
+ mysql> CREATE DATABASE IF NOT EXISTS `hello_world_test` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
+
+ # Grant necessary permissions on the database
+ mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `hello_world_test`.* TO 'runner'@'localhost';
+
+ # Quit the database session
+ mysql> \q
+
+3. Try to connect to database:
+
+ sudo -u gitlab-runner -H mysql -u runner -p -D hello_world_test
+
+4. Configure your application to use the database:
+
+ Host: localhost
+ User: runner
+ Password: $password
+ Database: hello_world_test