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


目录

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

  • 第一步:拉取MySQL镜像

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

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


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

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

# docker pull mysql

PS:可能有点小慢,但速度还是能肉眼所见的,若出现下载太慢,亦或者连接超时。

可以回忆一下Docker的库的国内代理是否配置了,若未配置则花上5分钟配置一下;

若配置过则可先排除网络问题,然后考虑换个国内代理。

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

[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为例)

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

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 :镜像名字

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

3、进入容器内简单测试 

docker exec -it my_mysql bash

此时发现,命令行的前缀已经变成了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、连接测试 因未配置权限一定会出现报错 但这里可能出现另外一种报错,一同说一下把 会报错 2003 1251等错误 

3、先开放服务器远程所需要的端口, 这个在自己的服务器设置 这个例子中开放3307端口

4、权限放开;

给root账户分配权限

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

5、刷新权限;

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

至此,容器配置完毕,远程连接完成。