使用docker搭建mysql

本文详细指导如何在新电脑上使用Docker安装和配置MySQL,包括下载Docker Desktop,设置国内镜像源,安装过程验证,以及创建并管理MySQL用户。重点讲解了如何启动、连接和迁移数据卷,适合开发者快速搭建本地数据库环境。

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

使用docker搭建mysql

最近新换了电脑,本地没有mysql服务了,想了想,决定使用docker装个mysql服务。
在这里插入图片描述

1. 下载docker desktop

1.1 下载

点此下载docker desktop

1.2 安装

重启后,点掉了一个框子(忘记截图了,-_-||),之后出现了这个弹框。
在这里插入图片描述

大概看了一下,是说要去链接的那个网站下一个内核然后再重启。我这里是下载了,不是所有人都需要下载,弹出此框就去下载就好。

1.3 修改源(国内源速度快)

在这里插入图片描述将下述代码粘入即可(实际只加了一个registry-mirrors,可以根据自己的需要调整)

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "registry-mirrors": ["http://hub-mirror.c.163.com"],
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

1.4 测试安装结果

启动后,效果如下(中间有几部省略了。。。)
在这里插入图片描述此时,在任意处按住ctrl+鼠标右键,选择【在windows终端打开】或者【powershell?差不多叫这个】,总之打开命令行窗口:
在这里插入图片描述输入:

docker run hello-world

显示以下内容,则表示docker安装成功
在这里插入图片描述

2. 安装mysql

2.1 下载mysql

想要下载mysql镜像,同上1.4步,打开命令行窗口,输入以下命令:

docker pull mysql

注意,这里如果要拉其他版本的mysql,应该使用如下命令(以mysql5.7为例)

docker pull mysql:5.7

2.2 启动mysql

待上面镜像下载完成后,输入以下命令:

docker run --name mysql-dev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

如果要启动mysql5.7,并使用本机3307端口对外,则应使用以下命令

docker run --name mysql5.7-dev -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

这里如果端口写错了,连接mysql时会报错2013

如下,代表启动成功
在这里插入图片描述

2.3 连接mysql并创建外部用户

1. 打开docker的mysql容器客户端

在这里插入图片描述打开后:
在这里插入图片描述
2.连接mysql服务端

​ mysql -u root -p

在这里插入图片描述

注意:这里的密码输入刚才上面设置的初始密码(见2.2),我这里是123456

登录成功:
在这里插入图片描述

3. 创建外部用户

CREATE USER admin@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 

此处,创建了用户名为admin,密码为123456的外部用户

4. 给外部用户授权

GRANT ALL PRIVILEGES ON *.* TO admin@'%';

此处,给admin用户授予了所有权限

2.4 测试安装结果

启动本地的navicat,连接到docker容器的mysql
在这里插入图片描述至此,测试完成,安装成功:
在这里插入图片描述

附1:Docker Desktop 的数据卷位置

docker的mysql做迁移时,需要找到它的数据卷,一并迁移才能做到mysql与数据一起迁移。

但使用docker volume系列命令查询到的路径只是其在linux系统下的路径,(由于使用Docker Desktop)在windows中并不知道它实际存在哪。

Docker Desktop默认数据卷位置如下:

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

直接使用 文件资源管理器(即:我的电脑) 粘贴到地址栏打开即可

附2:Docker启动mysql命令

首次启动:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/docker_volume/mysql:/var/lib/mysql mysql

既要指定数据卷,有要指定mysql的初始密码,且数据卷的目录/home/docker_volume/mysql必须为空目录,否则会启动失败!

若数据卷不手动指定,不使用-v参数也可以。但当需要数据迁移时,需要找到mysql的数据卷目录,将需要的数据卷内容全部复制到mysql的数据卷目录之下。

数据卷的查看

数据卷的查看请使用docker volume相关方法查看,具体用法参考:

docker volume --help
<think>好的,我现在需要帮用户解决如何使用Docker搭建MySQL主从复制的问题。首先,我得回忆一下相关步骤,可能需要先创建两个容器,一个作为主节点,另一个作为从节点。然后配置主节点的my.cnf文件,设置server-id和log-bin。接下来,重启主节点容器创建用于复制的用户并授权。之后,配置从节点的my.cnf,同样设置不同的server-id。然后进入从节点的MySQL使用CHANGE MASTER TO命令连接到主节点,指定主机地址、用户、密码、日志文件和位置。最后启动从节点的复制进程,检查状态。 不过,用户提供的引用中有一些细节需要注意。比如引用3提到了使用Docker命令运行主节点容器,映射端口、卷和环境变量。引用4提到了在从节点执行CHANGE MASTER TO时可能需要使用容器名称作为MASTER_HOST,并且要确保主从容器在同一个网络里。另外,主节点需要创建用户并授权复制权限,如引用2和4所述。还有,重启容器后配置生效,如引用1和2中的重启步骤。 可能需要分步骤详细说明,包括主节点的配置、从节点的配置、连接主从的步骤以及验证方法。同时要注意版本兼容性,比如5.7和8.0是否有差异,但用户提到引用2有详细步骤,可能可以建议用户参考。此外,用户可能容易出错的地方,比如server-id重复、日志文件位置错误,或者网络连接问题,需要提醒注意。最后,生成相关问题,比如性能优化、常见问题解决等。</think>### 使用 Docker 搭建 MySQL 主从复制教程 #### 一、主节点配置 1. **创建主节点容器** 运行以下命令启动主节点容器,映射端口、配置数据卷并设置密码: ```bash docker run -d -p 3307:3306 --name mysql-master \ -v /opt/mysql-master/conf:/etc/mysql/conf.d \ -v /opt/mysql-master/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ --privileged=true mysql:5.7 ``` 此处通过数据卷挂载自定义配置文件(`my.cnf`)[^3]。 2. **配置主节点文件** 在宿主机 `/opt/mysql-master/conf` 目录下创建 `my.cnf`,添加以下内容: ```ini [mysqld] server-id=1 log-bin=mysql-bin ``` 重启容器使配置生效: ```bash docker restart mysql-master ```[^2] 3. **创建复制用户** 进入主节点 MySQL 执行: ```sql CREATE USER 'slave'@'%' IDENTIFIED BY 'slave'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; FLUSH PRIVILEGES; ``` 查看主节点状态,记录 `File` 和 `Position` 值: ```sql SHOW MASTER STATUS; ```[^4] --- #### 二、从节点配置 1. **创建从节点容器** 运行命令启动从节点容器(注意端口和数据卷路径差异): ```bash docker run -d -p 3308:3306 --name mysql-slave \ -v /opt/mysql-slave/conf:/etc/mysql/conf.d \ -v /opt/mysql-slave/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ --privileged=true mysql:5.7 ``` 2. **配置从节点文件** 在从节点配置目录中添加 `my.cnf`: ```ini [mysqld] server-id=2 ``` 重启容器:`docker restart mysql-slave`[^1]。 --- #### 三、主从连接 1. **设置从节点同步参数** 进入从节点 MySQL 执行: ```sql CHANGE MASTER TO MASTER_HOST='mysql-master', -- 若容器在同一网络,可使用容器名称 MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-bin.000001', -- 主节点记录的File值 MASTER_LOG_POS=154; -- 主节点记录的Position值 ``` 启动同步: ```sql START SLAVE; ``` 2. **验证同步状态** 执行 `SHOW SLAVE STATUS\G`,确认: - `Slave_IO_Running` 和 `Slave_SQL_Running` 均为 `Yes` - `Last_IO_Error` 无报错 --- #### 四、测试数据同步 在主节点创建数据库或插入数据,观察从节点是否自动同步。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值