1、查询docker中的mysql镜像
docker search mysql
2、拉取mysql镜像
docker pull mysql
也可以拉取指定版本的mysql 例如 docker pull mysql:5.7,我这里下载的是默认的(不加版本号就下载最新的)
3、查看镜像
docker images
4、在创建文件夹方便将容器中的文件映射出来
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
命令中的含义产考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
7、使用数据库连接工具测速是否能连接上
我这里使用的是Navicat Premium,账号为root,密码为123456(在启动容器的命令中可以看到)
到此数据就创建成功了
不过有些时候安装的mysql后无法连接上(排除防火墙的影响,创建完成后就需要检查端口是否对外开放),考虑是不是mysql阻止了远程连接,需要进入mysql容器,并登陆mysql查看
docker exec -it mysql bash
这里的mysql就是创建容器的时候--name后面跟着的名字
登录命令使用 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;
镜像里面 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 命令来退出