Docker配置MySQL容器+远程连接(全流程)

最近在复习项目服务器部署,想要重新配置一个Mysql的Docker容器,发现很多知识有点记不清了,在这里记录一下。

一、Docker配置MySQL容器(全流程)

需要支持

  • Linux服务器
  • Docker
  • 常用的Linux和Docker命令

第一步:拉取MySQL镜像

1、拉取MySQL镜像(这里一般不会出现什么问题)

# docker pull mysql

PS:可能有点小慢,但速度还是能肉眼所见的,若出现下载太慢,亦或者连接超时。可以回忆一下Docker的库的国内代理是否配置了,若未配置则花上5分钟配置一下;若配置过则可先排除网络问题,然后考虑换个国内代理。

2、查看本地镜像,确认是否拉取成功

docker images

[root@iZ2ze2x2gvxfbo4c9b3Z docker]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql      latest              0d64f46acfd1        5 months ago        544 MB

(成功的话,列表内会出现docker.io//mysql)
这里拉取的是MySQL:latest版本,也可以使用$ docker pull mysql:5.7下载对应版本(以5.7为例)

第二步:根据镜像生成容器

1、通过镜像生成容器

docker run

# docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name my_mysql mysql
注释
 [ -d ]: 后台运行;
 [ -p ]: 配置端口映射(容器的3306映射到Linux的3307端口)
 [ -e ]: 添加配置信息(密码为123456)
 [ --name ]: 容器名字
 mysql :镜像名字

2、查看目录运行中的容器列表

docker ps

[root@iZ2ze2x2gv8gqxfbo4c9b3Z docker]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
382eacf64ae4        mysql               "docker-entrypoint..."   3 hours ago         Up 3 hours          33060/tcp, 0.0.0.0:3307->3306/tcp   my_mysql
f1891859be3a        mysql               "docker-entrypoint..."   4 months ago        Up 4 months         0.0.0.0:3306->3306/tcp, 33060/tcp   mysql01
bb2a2366bae9        tomcat              "catalina.sh run"        5 months ago        Up 5 months         0.0.0.0:8888->8080/tcp              loving_edison

其中第一条就是我们刚创建的MySQL镜像了

3、进入容器内简单测试

docker exec -it my_mysql bash

[root@iZ2ze2x2gv8gqxfbo4c9b3Z docker]# docker exec -it my_mysql bash
root@382eacf64ae4:/#
此时发现,命令行的前缀已经变成了382eacf64ae4,就是我们新建的my_mysql的容器ID。此时就相当于进入了容器内部的命令窗口。

此时输入
mysql -uroot -p123456

root@382eacf64ae4:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.21 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

到此为止,容器就已经创建完毕。

第三步:为MySQL容器配置远程连接访问权限

1、此时测试远程连接

以Navicat 为例,SQLyog管理软件等同理

在这里插入图片描述

2、连接测试
因未配置权限一定会出现报错
但这里可能出现另外一种报错,一同说一下把

报错1: 2003
在这里插入图片描述
此错误为云服务的安全策略配置问题,需要我们配置安全策略,开放我们要使用的3307端口。
下边以阿里云服务器为例
1、进入官网后登录,进入 控制台
2、进入个人服务器实例控制页面
在这里插入图片描述
3、进入实例控制界面
4、进入对应安全组界面
在这里插入图片描述
5、点击配置规则
在这里插入图片描述
6、添加对应的端口号即可。
在这里插入图片描述
到此,报错2003就解决完毕


一定会出现的另一个错误 – 远程访问权限错误
报错二 1251在这里插入图片描述

进入容器,操作数据库给root分配远程访问权限

1、进入容器可使用 docker exec -it my_mysql bash进入,这里不再贴代码了。
2、登录进入mysql ,使用 mysql -uroot -p123456登录mysql数据库
3、给root用户分配权限
alter user 'root'@'%' identified with mysql_native_password by '123456';

mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.00 sec)

4、刷新权限
flush privileges;

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

5、测试连接
在这里插入图片描述
至此,容器配置完毕,远程连接完成。


写在后边,这个容器其实只是简单测试MySQL容器,其中的数据,Docker一但重启就会消失,真正在正式使用的时候,会将MySQL中的数据、日志、配置文件等重要文件亦或是其他重要文件进行挂载操作防止数据丢失。(具体内容将会在另一篇文章中发表(总结中))

最后,总结不易,如果能帮到大家,给博主点鼓励点点小赞,万分感谢。

  • 56
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值