docker Mysql:5.7的持久化存储及远程连接

本文介绍在华为云CentOS 7.5环境下,使用Docker安装并配置MySQL 5.7的详细步骤,包括拉取镜像、预先配置、建立配置文件、运行命令等,还提及使用Navicat连接检查、MySQL用户授权,以及解决本地连接云端MySQL的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 前置条件:

  • 华为云 centos7.5 环境下
  • docker 已经安装完成
  • docker 服务已经启动

2. 拉取mysql:5.7的docker镜像

[root@laoliu mysql5.7]# docker pull mysql:5.7  # 使用这个命令拉取mysql镜像
Trying to pull repository docker.io/library/mysql ... 
5.7: Pulling from docker.io/library/mysql
fc7181108d40: Pull complete 
787a24c80112: Pull complete 
a08cb039d3cd: Pull complete 
4f7d35eb5394: Pull complete 
5aa21f895d95: Pull complete 
a742e211b7a2: Pull complete 
0163805ad937: Pull complete 
62d0ebcbfc71: Pull complete 
559856d01c93: Pull complete 
c849d5f46e83: Pull complete 
f114c210789a: Pull complete 
Digest: sha256:c3594c6528b31c6222ba426d836600abd45f554d078ef661d3c882604c70ad0a
Status: Downloaded newer image for docker.io/mysql:5.7
[root@laoliu mysql5.7]# docker images   # 查看镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     5.7                 a1aa4f76fab9        11 days ago         373 MB
[root@laoliu mysql5.7]# 

3. 预先配置

  • 配置好本地的文件目录
[root@laoliu mysql5.7]# mkdir -p /home/project/mysql5.7/{data,conf}
[root@laoliu mysql5.7]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 10 10:01 conf
drwxr-xr-x. 2 root root 6 Mar 10 10:01 data
[root@laoliu mysql5.7]# pwd
/home/project/mysql5.7

4. 建立配置文件

  • 坑1: 配置文件最好是以.cnf作为后缀, 试过以.conf后缀, 可以启动mysql, 但配置文件不起作用.
  • 坑2: 修改完配置文件, 记得docker restart containername 一下
[root@laoliu conf]# pwd
/home/project/mysql5.7/conf
[root@laoliu conf]# cat mysql5.7.cnf  # 注意这里, 我是已配置好了`mysql5.7.cnf`, 使用cat命令只是为了查看这个文件的内容.
[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# default: sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# modeified: 
sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=10M
default-time_zone='+8:00'

[root@laoliu conf]# 

5. 运行命令

[root@laoliu conf]# docker run -d -p 3306:3306 --restart=always --privileged=true -v /home/project/mys
### 如何使用 Docker 拉取 MySQL 5.7 镜像 为了成功拉取 MySQL 5.7Docker 镜像,需遵循一系列指令来确保操作无误。 #### 使用 `docker pull` 命令获取镜像 通过执行如下命令可从官方仓库下载 MySQL 5.7 版本的镜像: ```bash docker pull mysql:5.7 ``` 此命令会连接Docker Hub 检索指定标签 (`5.7`) 下的最新可用构建版本[^1]。 如果遇到超时错误或其他网络问题,则可能需要配置加速器或更改默认设置。对于中国用户来说,可以通过阿里云提供的国内镜像站加快下载速度。具体做法是在 `/etc/docker/daemon.json` 文件中加入 registry mirrors 设置,重启 Docker 服务以应用变更[^5]。 #### 创建运行容器实例 一旦镜像被成功加载至本地机器上之后,就可以基于该镜像启动一个新的 MySQL 容器了。下面是一个简单的例子展示如何完成这一步骤: ```bash docker run -d \ --name=mysql-server \ -e MYSQL_ROOT_PASSWORD=your_password_here \ -p 3306:3306 \ mysql:5.7 ``` 上述脚本定义了一个名为 `mysql-server` 的后台进程,设置了 root 用户密码通过端口映射使得外部能够访问数据库服务[^2]。 #### 数据持久化处理 考虑到数据安全性和稳定性,在实际部署环境中通常建议采用卷挂载的方式保存重要资料。这样即使容器停止甚至销毁也不会丢失任何有价值的信息。例如: ```bash docker volume create mydata docker run -d \ --name=mysql-persistent \ -v mydata:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=securepassword \ -p 3306:3306 \ mysql:5.7 ``` 这里创建了一个新的卷叫做 `mydata` 来存储所有的数据库文件[^3]。 #### 升级现有镜像 当有新版本发布时,可以先更新本地缓存中的镜像副本,然后再依据实际情况决定是否迁移旧版容器内的业务逻辑和关联资源。比如要将现有的 MySQL 实例升级到更高版本,首先要确保已经拥有了目标版本的镜像;其次按照前述方法备份好所有必要的参数配置以及表结构等内容;最后重建容器即可实现无缝切换[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值