一、官方推荐安装方式:
1、执行 docker pull mysql:5.6 命令,下载 mysql 镜像,如下所示:
2、执行命令,创建并启动 mysql 容器
docker run -d --name mysql5.6-3306 -p 3307:3306 -e MYSQL_ROOT_PASSWORD='123456' mysql:5.6
# -e 是环境配置
3、授权其他主机可以进行访问
# 进入 mysql 容器
docker exec -it mysql5.6-3306 bash
# 打开mysql 命令行,并输入密码
mysql -u root -p
# 授权其他主机可以进行访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
# 权限刷新
FLUSH PRIVILEGES;
# 并退出
exit;
4、使用 navicat 进行连接测试,我们发现没有问题,可以正常的进行连接。
5、删除 mysql 容器,删除之后再次尝试使用 navicat 进行连接
# 首先关闭当前的 mysql 容器
docker stop mysql5.6-3306
# 删除 mysql 容器
docker rm mysql5.6-3306
二、常用安装方式:
1、执行 docker pull mysql:5.6 命令,下载 mysql 镜像,如下所示:
2、执行命令,创建并启动 mysql 容器,并挂载数据目录
# 即使挂载的宿主文件夹不存在也没事,docker 会自动帮我们创建
docker run -d --name mysql5.6-3306 -p 3307:3306 -e MYSQL_ROOT_PASSWORD='123456' -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql mysql:5.6
3、执行命令来查看挂载是否成功
docker inspect docker5.6-3306
4、使用 navicat 进行连接测试,我们发现没有问题,可以正常的进行连接。
5、测试挂载是否生效,首先创建一个数据库 mysql_container_test ,然后删除掉 mysql 容器,看看数据库在宿主机中是否还存在
我们发现即使容器被删除掉了,宿主机的数据库仍然存在
6、ro 和 rw 参数
# 只读
ro = read only
# 可读可写
rw = read write
# 一旦设置了容器权限,容器对我们挂载出来的内容就有了限定。
# 只要看到 ro 就说明这个路径只能通过宿主机来操作,容器内部是无法操作!
docker run -d --name mysql5.6-3306 -p 3307:3306 -e MYSQL_ROOT_PASSWORD='123456' -v /usr/local/mysql/conf:/etc/mysql/conf.d:ro mysql:5.6
docker run -d --name mysql5.6-3306 -p 3307:3306 -e MYSQL_ROOT_PASSWORD='123456' -v /usr/local/mysql/data:/var/lib/mysql:rw mysql:5.6