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

您所在的位置:网站首页 如何查看docker容器是否可以连接外网设备 Docker配置MySQL容器+远程连接(全流程)

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

2023-08-10 10:16| 来源: 网络整理| 查看: 265

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

目录 一、Docker配置MySQL容器(全流程)第一步:拉取MySQL镜像第二步:根据镜像生成容器第三步:为MySQL容器配置远程连接访问权限

一、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中的数据、日志、配置文件等重要文件亦或是其他重要文件进行挂载操作。防止数据丢失。(具体内容将会在另一篇文章中发表(总结中))

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



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3