Dokcer创建MySQL容器,并在宿主机或mysql可视化工具中连接mysql容器的数据库

本文介绍了如何使用Docker创建MySQL容器,并解决从宿主机或MySQL工具连接容器内数据库的问题。详细步骤包括拉取镜像、创建运行容器、端口映射,以及在遇到如'ERROR 2013'等连接错误时的解决方案,强调了指定正确的端口参数的重要性。
摘要由CSDN通过智能技术生成

本文将总结如何通过docker创建mysql容器,并且通过宿主机或mysql可视化工具连接mysql容器的数据库(中间有遇到问题,并最终成功解决了)

  • 报错1:ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2
  • 报错2:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

说明:
我使用的是docker desktop for windows,并且是基于WSL2 后端的,并且WSL2分发使用的是Ubuntu,下面演示示例中,大部分命令都是通过Ubuntu来访Docker的。

一、Docker 创建 MySQL容器

1. 拉取 MySQL 镜像

拉取最新版本的mysql

docker pull mysql

拉取指定版本的mysql(如 5.7)

docker pull mysql:5.7

如下,使用docker images mysql查看已拉取的mysql镜像

root@GC:~# docker images mysql
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    99afc808f15b   4 weeks ago   577MB
mysql        5.7       92034fe9a41f   5 weeks ago   581MB
root@GC:~#

2. 创建并运行 MySQL 容器

使用docker run创建并运行mysql容器
使用docker ps查看正在运行的容器

root@GC:~# docker run -d --name mysql5.7 -p 33065:33065 -e MYSQL_ROOT_PASSWORD=1234qwer mysql:5.7
10124d6b026e8442e7250196a1c979ff3fdd7ad5021fc50865cb871cfa662ee6
root@GC:~# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED              STATUS              PORTS                                           NAMES
10124d6b026e   mysql:5.7   "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp, 0.0.0.0:33065->33065/tcp   mysql5.7

docker run:创建并运行容器
-d:后台运行方式
--name mysql5.7:给创建的容器起个名字,如果不指定则随机生成一个默认的
-p 33065:33065:将容器的端口映射到宿主机的端口(前者是宿主机的端口,后者是mysql容器暴露的端口)
-e MYSQL_ROOT_PASSWORD=1234qwer:给容器设置一个环境变量(设置myslq的root用户密码)
mysql:5.7:指定用来创建容器的镜像的名称和tag,也可以用image id代替

注意:这里使用的"-p 33065:33065"是有问题的,后面会说。
(这也是我自己造了一个坑,把自己困了一天。。。)

3. 创建并运行 MySQL 容器(目录映射)

在实际使用中,需要将docker容器中的数据、日志、配置文件等重要目录,映射到宿主机本地,防止docker容器被删除后数据丢失的问题。

映射到Windows目录方式:

docker run -d -p 3306:3306 --name mysql5.7 ^
-v /e/mysql/docker-mysql/my.cnf:/etc/my.cnf ^
-v /e/mysql/docker-mysql/logs:/var/log/mysql ^
-v /e/mysql/docker-mysql/data:/var/lib/mysql ^
-e MYSQL_ROOT_PASSWORD=1234qwer ^
mysql:5.7

映射到Linux目录方式:

docker run -d -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=1234qwer \
mysql:5.7

上述命令中&#x

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小青龍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值