Docker 安装 MySQL
MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。
1. 查看可用的 MySQL 版本
访问 MySQL 镜像库地址:https://dockers.xuanyuan.me/image/library/mysql
可以通过标签列表查看其他版本的 MySQL,默认是最新版本 mysql:latest。
提示
你也可以使用 docker search mysql 命令来查看可用版本
$ 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
:指定容器名称
验证安装
通过 docker ps 命令查看容器运行状态。本机可以通过 root 用户和设置的密码访问 MySQL 服务。
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 版本对用户认证方式做了调整,如需使用旧版客户端连接,需要特别配置。
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,确保使用了正确的认证方式