创建镜像
拉取官方镜像(我们这里选择8.0,如果不写后面的版本号则会自动拉取最新版)
1 | docker pull mysql:8.0 # 拉取 mysql 8.0 |
查看所有镜像
1 | docker images |
创建容器
1 | docker run -d -p 33060:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0 |
- -–name:容器名,此处命名为
mysql8.0
- –privileged:root权限
- -e:配置信息,此处配置mysql的root用户的登陆密码
- -p:端口映射,此处将宿主机3306端口映射到容器的33060端口
- -d:后台运行容器,保证在退出终端后容器继续运行
创建固定ip容器
1 | # 命令创建一个自定义网络 |
创建目录映射
为了数据安全和可操作性,可以把mysql的配置文件和数据映射到宿主机上。
1 | docker run -d -p 3306:3306 --name mysql --privileged=true \ |
- -v:主机和容器的目录映射关系,”:”前为主机目录,之后为容器目录
- –privileged:只有这个值等于true的时候才能挂在映射关系。可以理解为mysql的root权限
连接mysql
进入docker本地连接mysql客户端
1 | docker exec -it mysql8.0 bash |
远程连接
使用远程连接软件时要注意一个问题,我们在创建容器的时候如果将容器的3306端口映射到主机的33060端口,那么就应该应该访问:
1 | host: 127.0.0.1 |
常见问题
如果你的容器运行正常,但是无法访问到MySQL,一般有以下几个可能的原因:
防火墙阻拦
1 | 开放端口: |
设置远程访问账号
1 | sudo docker exec -it mysql bash |
mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改)
1 |
|