# Using MySQL

> 原文：[https://docs.gitlab.com/ee/ci/services/mysql.html](https://docs.gitlab.com/ee/ci/services/mysql.html)

*   [Use MySQL with the Docker executor](#use-mysql-with-the-docker-executor)
*   [Use MySQL with the Shell executor](#use-mysql-with-the-shell-executor)
*   [Example project](#example-project)

# Using MySQL[](#using-mysql "Permalink")

由于许多应用程序都依赖 MySQL 作为其数据库，因此最终需要它才能运行测试. 下面将指导您如何使用 GitLab Runner 的 Docker 和 Shell 执行程序执行此操作.

## Use MySQL with the Docker executor[](#use-mysql-with-the-docker-executor "Permalink")

如果您将[GitLab Runner](../runners/README.html)与 Docker 执行程序一起使用，则基本上已经完成了所有设置.

First, in your `.gitlab-ci.yml` add:

```
services:
  - mysql:latest

variables:
  # Configure mysql environment variables (https://hub.docker.com/_/mysql/)
  MYSQL_DATABASE: "<your_mysql_database>"
  MYSQL_ROOT_PASSWORD: "<your_mysql_password>" 
```

**注意：**无法在 GitLab UI 中设置`MYSQL_DATABASE`和`MYSQL_ROOT_PASSWORD`变量. 要设置它们，请将它们分配给[UI 中](../variables/README.html#create-a-custom-variable-in-the-ui)的变量，然后将该变量分配给`.gitlab-ci.yml`的`MYSQL_DATABASE`和`MYSQL_ROOT_PASSWORD`变量.

然后将您的应用程序配置为使用数据库，例如：

```
Host: mysql
User: root
Password: <your_mysql_password>
Database: <your_mysql_database> 
```

如果您想知道为什么我们对`Host`使用`mysql` ，请阅读[如何将服务链接到作业的更多信息](../docker/using_docker_images.html#how-services-are-linked-to-the-job) .

您还可以使用[Docker Hub](https://hub.docker.com/_/mysql/)上可用的任何其他 Docker 映像. 例如，要使用 MySQL 5.5，服务将变为`mysql:5.5` .

`mysql`映像可以接受一些环境变量. 有关更多详细信息，请参阅[Docker Hub](https://hub.docker.com/_/mysql/)上的文档.

## Use MySQL with the Shell executor[](#use-mysql-with-the-shell-executor "Permalink")

您还可以在手动配置的服务器上使用 MySQL，该服务器通过 Shell 执行程序使用 GitLab Runner.

首先安装 MySQL 服务器：

```
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev 
```

选择一个 MySQL 根密码（可以是任何密码），并在询问时键入两次.

*注意：作为一项安全措施，您可以运行`mysql_secure_installation`删除匿名用户，删除测试数据库并以 root 用户禁用远程登录.*

下一步是创建用户，因此以 root 用户身份登录 MySQL：

```
mysql -u root -p 
```

然后创建一个将由您的应用程序使用的用户（在我们的示例中为`runner` ）. 将以下命令中的`$password`更改`$password`真实的强密码.

*注意：请勿键入`mysql>` ，这是 MySQL 提示符的一部分.*

```
mysql> CREATE USER 'runner'@'localhost' IDENTIFIED BY '$password'; 
```

创建数据库：

```
mysql> CREATE DATABASE IF NOT EXISTS `<your_mysql_database>` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; 
```

授予对数据库的必要权限：

```
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `<your_mysql_database>`.* TO 'runner'@'localhost'; 
```

如果一切顺利，您现在可以退出数据库会话：

```
mysql> \q 
```

现在，尝试连接到新创建的数据库以检查一切是否就绪：

```
mysql -u runner -p -D <your_mysql_database> 
```

最后，配置您的应用程序以使用数据库，例如：

```
Host: localhost
User: runner
Password: $password
Database: <your_mysql_database> 
```

## Example project[](#example-project "Permalink")

为了方便起见，我们使用公共可[共享的](../runners/README.html)运行程序在[GitLab.com](https://gitlab.com)上运行了一个[MySQL 示例项目](https://gitlab.com/gitlab-examples/mysql) .

想要破解吗？ 只需对其进行分叉，提交并推送您的更改. 稍后，公共跑步者将选择更改并开始工作.