使用docker安装mysql是当前主流的部署方式之一,相比传统本地安装,它不需要手动配置依赖环境,也不会污染宿主机的系统配置,还能快速创建多个不同版本的mysql实例,非常适合开发、测试场景使用。

前置准备
首先确保宿主机已经安装了docker环境,可以通过下面的命令验证docker是否正常运行:
# 查看docker版本 docker --version # 查看docker服务状态 systemctl status docker
如果还没有安装docker,可以先完成docker的基础安装,确保docker服务处于运行状态后再进行后续操作。
拉取mysql镜像
docker安装mysql的第一步是拉取官方mysql镜像,默认会拉取最新版本的镜像,也可以指定具体的版本号。执行下面的命令拉取镜像:
# 拉取最新版mysql镜像 docker pull mysql # 拉取指定版本,比如8.0版本 docker pull mysql:8.0
拉取完成后可以通过下面的命令查看本地已有的镜像:
docker images | grep mysql
启动mysql容器
拉取镜像后就可以启动mysql容器了,启动时需要配置端口映射、root密码、数据持久化等参数,下面是常用的启动命令:
docker run -d --name mysql_container -p 3306:3306 -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
下面解释各个参数的含义:
-d:后台运行容器,避免终端退出后容器停止--name mysql_container:给容器指定一个自定义名称,方便后续操作-p 3306:3306:端口映射,将宿主机的3306端口映射到容器的3306端口,外部可以通过宿主机3306端口访问mysql-v:数据卷挂载,实现数据持久化,避免容器删除后数据丢失,分别挂载了日志、数据文件、配置文件目录-e MYSQL_ROOT_PASSWORD=123456:设置mysql root用户的密码,这是必填参数,否则容器无法启动mysql:8.0:指定使用的镜像名称和版本
验证安装结果
容器启动后可以通过以下方式验证mysql是否正常运行:
查看容器运行状态
docker ps | grep mysql_container
如果看到容器的状态是Up,说明容器正常运行。
进入容器连接mysql
# 进入容器终端 docker exec -it mysql_container bash # 在容器内连接mysql mysql -uroot -p123456
如果能够成功进入mysql命令行界面,说明mysql安装和启动成功。
外部工具连接测试
可以使用本地的mysql客户端工具,比如Navicat、DBeaver等,连接宿主机的3306端口,使用root账号和密码123456进行连接,验证是否可以正常访问。
常见问题处理
端口被占用
如果启动时报错端口被占用,可以修改宿主机的映射端口,比如将-p 3306:3306改为-p 3307:3306,外部访问时使用3307端口即可。
数据卷权限问题
如果启动后日志提示权限不足,可以修改宿主机挂载目录的权限:
chmod -R 777 /mydata/mysql/
忘记root密码
如果忘记了设置的root密码,可以先停止并删除容器,重新执行启动命令,更换MYSQL_ROOT_PASSWORD参数的值即可,因为数据卷挂载了数据目录,原来的数据不会丢失。
停止和删除容器
如果需要停止或删除mysql容器,可以执行下面的命令:
# 停止容器 docker stop mysql_container # 启动已停止的容器 docker start mysql_container # 删除已停止的容器 docker rm mysql_container
注意删除容器前需要先停止容器,且如果之前没有挂载数据卷,删除容器后数据会全部丢失。