MySQL 是最流行的关系型数据库之一,而 Docker 提供了轻量级、可移植的容器化解决方案。本文将详细介绍如何在 CentOS 7 上使用 Docker 部署 MySQL 5.7,并通过 Windows 上的 Navicat 进行远程连接。内容涵盖:
适用于 开发、测试及生产环境,确保数据持久化、高可用性和安全性。
在 CentOS 7 上安装 Docker:
# 安装依赖
sudo yum install -y yum-utils
# 添加 Docker 官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
sudo yum install docker-ce docker-ce-cli containerd.io -y
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker --version输出应类似:
Docker version 20.10.12, build e91ed57docker pull mysql:5.7docker run -d \
--name mysql57 \
-e MYSQL_ROOT_PASSWORD=yourpassword \
-p 3306:3306 \
mysql:5.7docker run -d \
--name mysql57 \
-e MYSQL_ROOT_PASSWORD=yourpassword \
-p 3306:3306 \
-v /data/mysql:/var/lib/mysql \
--restart unless-stopped \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--bind-address=0.0.0.0参数说明:
-v /data/mysql:/var/lib/mysql:数据持久化存储--restart unless-stopped:容器异常退出时自动重启--bind-address=0.0.0.0:允许远程连接docker exec -it mysql57 mysql -uroot -p输入密码后进入 MySQL Shell。
-- 创建新用户(避免直接使用 root)
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPass123!';
-- 授予所有权限(生产环境建议按需授权)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;SELECT host, user FROM mysql.user;输出应包含:
+-----------+-------------+
| host | user |
+-----------+-------------+
| % | remote_user |
| localhost | root |
+-----------+-------------+如果 Docker 运行在本地:直接使用 127.0.0.1:3306
如果 Docker 运行在远程服务器:
确保服务器防火墙开放 3306 端口:
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload云服务器需配置安全组规则(如 AWS、阿里云)
127.0.0.1)3306remote_userStrongPass123!(示意图)
# 检查容器是否运行
docker ps
# 查看端口映射
docker port mysql57
# 检查 MySQL 日志
docker logs mysql57# CentOS 7 开放端口
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload-- 检查用户权限
SHOW GRANTS FOR 'remote_user'@'%';避免使用 root 远程连接
限制访问 IP:
GRANT ALL ON *.* TO 'user'@'192.168.1.%' IDENTIFIED BY 'password';启用 SSL 加密(可选):
docker run -v /mysql/ssl:/etc/mysql/ssl ... mysql:5.7 --ssl-ca=/etc/mysql/ssl/ca.pem --ssl-cert=/etc/mysql/ssl/server-cert.pem --ssl-key=/etc/mysql/ssl/server-key.pem定期备份数据:
docker exec mysql57 mysqldump -uroot -p --all-databases > backup.sql本文详细介绍了:
通过 Docker 运行 MySQL 不仅简化了环境配置,还便于迁移和版本管理。结合 Navicat 的图形化管理,可极大提升开发效率。
适用场景:
进一步学习:
附录:完整 Docker Compose 示例
version: '3.8'
services:
mysql:
image: mysql:5.7
container_name: mysql57
environment:
MYSQL_ROOT_PASSWORD: yourpassword
MYSQL_USER: remote_user
MYSQL_PASSWORD: StrongPass123!
ports:
- "3306:3306"
volumes:
- /data/mysql:/var/lib/mysql
restart: unless-stopped
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--bind-address=0.0.0.0使用方式:
docker-compose up -d版权声明 © 2023 数据库与 Docker 实践指南。转载请注明出处。