Docker 安装 MySQL

MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。

1. 查看可用的 MySQL 版本

可以通过标签列表查看其他版本的 MySQL,默认是最新版本 mysql:latest。

$ docker search mysql
NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                    MySQL is a widely used, open-source relati...   2529      [OK]       
mysql/mysql-server       Optimized MySQL Server Docker images. Crea...   161                  [OK]
centurylink/mysql        Image containing mysql. Optimized to be li...   45                   [OK]
sameersbn/mysql                                                          36                   [OK]
google/mysql             MySQL server for Google Compute Engine          16                   [OK]
appcontainers/mysql      Centos/Debian Based Customizable MySQL Con...   8                    [OK]
marvambass/mysql         MySQL Server based on Ubuntu 14.04              6                    [OK]
drupaldocker/mysql       MySQL for Drupal                                2                    [OK]
azukiapp/mysql           Docker image to run MySQL by Azuki - http:...   2                    [OK]

2. 拉取 MySQL 镜像

这里我们拉取官方的最新版本的镜像:

$ docker pull mysql:latest

3. 查看本地镜像

使用以下命令来查看是否已安装了 mysql:

$ docker images

在输出中可以看到我们已经安装了最新版本(latest)的 mysql 镜像。

4. 运行容器

安装完成后,我们可以使用以下命令来运行 mysql 容器:

$ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

参数说明

  • -p 3306:3306:映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
  • MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
  • -d:后台运行容器
  • --name mysql-test:指定容器名称

5. MySQL 配置

配置文件说明

MySQL(5.7.19+) 的默认配置文件是 /etc/mysql/my.cnf 文件。如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中创建 .cnf 文件。

1. 创建配置文件目录:

# pwd
/opt
# mkdir -p docker_v/mysql/conf
# cd docker_v/mysql/conf
# touch my.cnf

2. 启动带配置的容器:

docker run -p 3306:3306 --name mysql \
-v /opt/docker_v/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql

6. MySQL 8.0 特别说明

MySQL 8.0 安装步骤

1. 启动容器:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password -d mysql

2. 进入容器:

docker exec -it mysql bash

3. 登录 MySQL:

mysql -u root -p

4. 创建远程访问用户:

CREATE USER 'remote'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%';
FLUSH PRIVILEGES;

常见问题

数据持久化

要确保数据不会因容器删除而丢失,启动时需要挂载数据目录:

docker run -d \
--name mysql \
-p 3306:3306 \
-v /my/data/path:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

远程连接问题

如果无法远程连接 MySQL,请检查:

  • 确保端口映射正确(-p 3306:3306)
  • 检查防火墙是否开放 3306 端口
  • 确保创建了允许远程连接的用户
  • 对于 MySQL 8.0,确保使用了正确的认证方式