1、查询docker中的mysql镜像

docker search mysql

image.png

2、拉取mysql镜像

docker pull mysql

也可以拉取指定版本的mysql 例如 docker pull mysql:5.7,我这里下载的是默认的(不加版本号就下载最新的)
image.png

3、查看镜像

docker images

image.png

4、在创建文件夹方便将容器中的文件映射出来
image.png

5、启动mysql容器,显示一串字符串表示启动成功

docker run --name mysql -v /opt/docker/mysql/conf:/etc/mysql/conf.d -v /opt/docker/mysql/logs:/logs -v /opt/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:latest

image.png
命令中的含义产考Docker的常用命令最下面

docker run --name mysql   	指定启动容器的名称是‘mysql’
-v /opt/docker/mysql/conf:/etc/mysql/conf.d  将容器中的路径文件挂载(也可以理解为映射)到主机文件夹下(就是刚刚创建的文件)
-v /opt/docker/mysql/logs:/logs              同上
-v /opt/docker/mysql/data:/var/lib/mysql     同上
-e MYSQL_ROOT_PASSWORD=123456                指定账户的密码
-d 		 后台运行容器 
-i 		运行容器
-p 3306:3306 	将容器的端口(一般就是要安装的这个程序的端口)映射到主机端口,前者是宿主机端口,后者是容器内的映射端口
mysql:latest    镜像名称:标签

6、使用命令查看容器是否正常运行

docker ps

image.png

7、使用数据库连接工具测速是否能连接上
我这里使用的是Navicat Premium,账号为root,密码为123456(在启动容器的命令中可以看到)
image.png
到此数据就创建成功了

不过有些时候安装的mysql后无法连接上(排除防火墙的影响,创建完成后就需要检查端口是否对外开放),考虑是不是mysql阻止了远程连接,需要进入mysql容器,并登陆mysql查看

docker exec -it mysql bash
这里的mysql就是创建容器的时候--name后面跟着的名字

16524507461.png
登录命令使用 mysql -uroot -p 否则就辉报错上面红框圈出的‘未找到命令’

mysql -u账户名 -p

开启远程访问权限命令,按顺序执行以下命令

use mysql;
select host,user from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

image.png
镜像里面 root用户已经有远程连接权限在里面,所以不需要去设置,只是模式不一样才导致无法连接,把root用户的密码改成 mysql_native_password 模式,即可远程连接

如何远程连接mysql报10060错误,执行以下命令

docker exec -it mysql /usr/bin/bash //进入mysql容器进行配置等操作
mysql -u root -p //登录
GRANT ALL PRIVILEGES ON . TO 'root'@'%'WITH GRANT OPTION; //任何远程主机都可以访问数据库
FLUSH PRIVILEGES; //需要输入此命令使修改生效

注:
grant all privileges on *.* to root@'%' with grant option;// mysql 8.0以后版本使用这个

最后可以使用 exit 命令来退出