在CentOS系统中使用Docker安装MySQL是一种高效且可移植的数据库部署方式,Docker容器化技术能够简化环境配置,确保开发、测试和生产环境的一致性,以下是详细的安装步骤和注意事项,帮助您顺利完成MySQL的部署。

系统要求与环境准备
在开始安装前,确保您的CentOS系统满足基本要求,建议使用CentOS 7或更高版本,并且系统已更新至最新状态,执行以下命令更新系统包:
sudo yum update -y
确保系统已安装Docker,如果尚未安装,可以通过以下命令添加Docker官方仓库并安装:
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io
安装完成后,启动Docker服务并设置为开机自启:
sudo systemctl start docker sudo systemctl enable docker
拉取MySQL镜像
Docker Hub提供了官方的MySQL镜像,支持多个版本,您可以根据需求选择合适的版本,例如拉取MySQL 8.0镜像:
sudo docker pull mysql:8.0
如果需要其他版本,可以将0替换为7或其他版本号,拉取完成后,可以通过以下命令验证镜像是否成功下载:

sudo docker images | grep mysql
创建并启动MySQL容器
使用docker run命令创建并启动MySQL容器,以下是一个常用的命令示例:
sudo docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -e MYSQL_DATABASE=my_database -e MYSQL_USER=my_user -e MYSQL_PASSWORD=my_user_password -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql mysql:8.0
命令参数说明:
-d:后台运行容器。--name:指定容器名称,便于管理。-e:设置环境变量,包括root密码、默认数据库和用户信息。-p:将容器的3306端口映射到主机的3306端口。-v:将主机的/var/lib/mysql目录挂载到容器中,实现数据持久化。
启动容器后,可以通过以下命令检查容器状态:
sudo docker ps
配置MySQL服务
默认情况下,MySQL容器已经包含了基本配置文件,如果需要自定义配置,可以通过以下步骤实现:
- 创建自定义配置文件
my.cnf,sudo mkdir -p /my/custom/conf.d sudo vim /my/custom/conf.d/my.cnf
在配置文件中添加自定义参数,如字符集、存储引擎等:

[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default-storage-engine=InnoDB
- 启动容器时挂载配置文件:
sudo docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -v /my/custom/conf.d:/etc/mysql/conf.d -v /var/lib/mysql:/var/lib/mysql -p 3306:3306 mysql:8.0
数据备份与恢复
容器化MySQL的数据备份与恢复与传统方式类似,以下是常用方法:
- 备份数据:
sudo docker exec mysql-container sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /backup.sql
- 恢复数据:
sudo docker exec -i mysql-container sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /backup.sql
常见问题与解决方案
- 容器启动失败:检查日志信息,确认端口是否被占用或配置文件是否有误,可通过
sudo docker logs mysql-container查看日志。 - 连接超时:确保防火墙已开放3306端口,或使用
sudo firewall-cmd --permanent --add-port=3306/tcp和sudo firewall-cmd --reload添加规则。
FAQs
Q1: 如何修改MySQL容器的root密码?
A1: 使用docker exec命令进入容器后,执行ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';命令,或直接停止容器后重新创建,通过环境变量MYSQL_ROOT_PASSWORD设置新密码。
Q2: 如何实现MySQL容器的数据迁移?
A2: 通过docker cp命令或数据卷挂载的方式迁移数据,将旧容器的数据目录复制到新主机:sudo docker cp mysql-container:/var/lib/mysql /new/path,然后在启动新容器时挂载该目录。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复