Docker之单实例MySQL部署
单实例MySQL:快速部署指南
核心部署命令
docker run -d \
-p 3306:3306 \
--name mysql \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf:/etc/mysql/conf.d \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
参数详解
参数 | 说明 | 必要性 |
---|---|---|
-d | 后台运行容器 | 必选 |
-p 3306:3306 | 端口映射(主机端口:容器端口) | 必选 |
--name mysql | 指定容器名称 | 推荐 |
-v /home/mysql/log:/var/log/mysql | 挂载日志目录 | 可选 |
-v /home/mysql/data:/var/lib/mysql | 挂载数据目录(关键!) | 必选 |
-v /home/mysql/conf:/etc/mysql/conf.d | 挂载配置文件目录 | 推荐 |
--restart=always | 自动重启策略 | 生产环境建议 |
-e MYSQL_ROOT_PASSWORD=123456 | 设置root密码 | 必选 |
mysql:5.7 | 镜像地址 | 可替换为自定义镜像 |
配置不区分大小写(重要步骤)
创建配置文件:
vi mysqld.cnf
写入以下内容:
[mysqld] lower_case_table_names=1 # 关键配置:表名不区分大小写 pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql symbolic-links=0
应用配置:
docker cp mysqld.cnf mysql:/etc/mysql/mysql.conf.d/mysqld.cnf docker restart mysql
关键目录说明
主机目录 | 容器目录 | 作用 |
---|---|---|
/home/mysql/data | /var/lib/mysql | 数据库文件存储位置 |
/home/mysql/conf | /etc/mysql/conf.d | 自定义配置文件 |
/home/mysql/log | /var/log/mysql | 日志文件 |
验证安装
# 进入容器
docker exec -it mysql bash
# 登录MySQL
mysql -uroot -p123456
# 查看配置是否生效
SHOW VARIABLES LIKE 'lower_case%';
注意事项
- 数据安全:确保
/home/mysql/data
目录定期备份 - 密码安全:生产环境应使用复杂密码,建议通过
--env-file
传递密码 网络安全:如需远程访问,建议:
- 修改
bind-address = 0.0.0.0
- 配置防火墙规则
- 修改
- 性能优化:根据服务器配置调整
innodb_buffer_pool_size
等参数
常见问题解决方案
Q:启动失败提示"权限被拒绝"?
chown -R 999:999 /home/mysql/data # MySQL容器默认使用999用户
Q:如何迁移数据?
# 只需将/home/mysql/data目录复制到新服务器
# 使用相同的docker run命令启动即可
Q:如何升级版本?
docker stop mysql
docker rm mysql
# 备份数据目录后,修改镜像版本号重新运行
通过这种部署方式,您将获得一个:
- 数据持久化的MySQL实例
- 表名不区分大小写(兼容Windows开发环境)
- 配置可灵活修改的数据库服务