使用 MySQL
- 版本:Free, Premium, Ultimate
- 产品:GitLab.com, GitLab Self-Managed, GitLab Dedicated
许多应用程序都使用 MySQL 作为数据库,在运行测试时,您可能也需要用到它。
在 Docker 执行器中使用 MySQL
如果您想使用 MySQL 容器,可以使用 GitLab Runner 的 Docker 执行器。
本示例将向您展示如何设置 GitLab 用于访问 MySQL 容器的用户名和密码。如果您不设置用户名和密码,则必须使用 root。
在 GitLab UI 中设置的变量不会被传递给服务容器。 更多信息,请参阅 GitLab CI/CD 变量。
-
要指定 MySQL 镜像,请在您的
.gitlab-ci.yml文件中添加以下内容:services: - mysql:latest- 您可以使用 Docker Hub 上提供的任何 Docker 镜像。
例如,要使用 MySQL 5.5,请使用
mysql:5.5。 mysql镜像可以接受环境变量。更多信息,请查看 Docker Hub 文档。
- 您可以使用 Docker Hub 上提供的任何 Docker 镜像。
例如,要使用 MySQL 5.5,请使用
-
要指定数据库名称和密码,请在您的
.gitlab-ci.yml文件中添加以下内容:variables: # Configure mysql environment variables (https://hub.docker.com/_/mysql/) MYSQL_DATABASE: $MYSQL_DB MYSQL_ROOT_PASSWORD: $MYSQL_PASSMySQL 容器使用
MYSQL_DATABASE和MYSQL_ROOT_PASSWORD来连接数据库。 请通过 GitLab CI/CD 变量(上例中的$MYSQL_DB和$MYSQL_PASS)来传递这些值, 而不是直接调用它们。 -
配置您的应用程序以使用该数据库,例如:
Host: mysql User: runner Password: <your_mysql_password> Database: <your_mysql_database>在此示例中,用户是
runner。您应该使用一个有权访问您数据库的用户。
在 Shell 执行器中使用 MySQL
您也可以在使用 GitLab Runner Shell 执行器的手动配置服务器上使用 MySQL。
-
安装 MySQL 服务器:
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev -
选择一个 MySQL root 密码,并在提示时输入两次。
作为一项安全措施,您可以运行
mysql_secure_installation来 移除匿名用户、删除测试数据库,并禁用 root 用户的远程登录。 -
以 root 身份登录 MySQL 来创建用户:
mysql -u root -p -
创建一个供您的应用程序使用的用户(本例中为
runner)。将命令中的$password更改为一个强密码。在
mysql>提示符下,输入:CREATE USER 'runner'@'localhost' IDENTIFIED BY '$password'; -
创建数据库:
CREATE DATABASE IF NOT EXISTS `<your_mysql_database>` DEFAULT CHARACTER SET `utf8` \ COLLATE `utf8_unicode_ci`; -
授予数据库必要的权限:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `<your_mysql_database>`.* TO 'runner'@'localhost'; -
如果一切顺利,您可以退出数据库会话:
\q -
连接到新创建的数据库以检查一切是否就绪:
mysql -u runner -p -D <your_mysql_database> -
配置您的应用程序以使用该数据库,例如:
Host: localhost User: runner Password: $password Database: <your_mysql_database>
示例项目
要查看 MySQL 示例,请 fork 此示例项目。 该项目使用了 GitLab.com 上公开可用的 实例 Runner。 更新 README.md 文件,提交您的更改,然后查看 CI/CD 流水线以查看其运行效果。