本次是在win10环境下的windows container模式中部署mysql镜像
部署步骤如下:
1、在dockerhub上拉取winamd64版本的mysql镜像。
2、启动命令
注意这里,我的启动命令是把映射端口设置为外部3307,容器内部80,请继续向下看。
3、mysql容器启动成功后,可以docker ps看到容器状态
接下来要进入容器
重置mysql的root用户密码
4、因为我们这是mysql容器,外部要访问我们的mysql数据库,要知道容器ip
5、有了容器ip,就可以使用数据库连接工具进行连接了
因为映射端口设置的是3307:80,看起来应该是容器ip:3307这样来连接数据库的,但是连接3307端口连不上,这就奇了怪了,这设置的映射端口没什么卵用。
使用下面的命令,可以查看mysql容器的状态
有下面的片段
这个主机端口是3307,但是就是3307连不上,倒是3306可以连接,但是显示的是1130不能远程连接的错误,因为在启动命令的时候,并没有添加其他的附加命令。
6、解决数据库连接1130远程不能连接
进入容器命令
然后在容器中,输入下面的指令:
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
记得Mysql服务需要重新启动(确保修改有效),否则可能修改的结果无法体现。
7、然后就可以正常使用数据库连接工具了,连接成功会有mysql版本的提示,我的mysql容器的版本是5.7.22的,宿主机是8.0.18的,注意连接ip不要写错
可以在mysql容器中,创建个数据库,测试是否可以正常使用。
8、现在数据库已经可以正常使用了,但是有点疑惑的是,为啥我设置了映射端口没什么卵用?
9、如果我在mysql容器的启动命令里加上如下
挂载数据卷和更改root用户密码,就启动报错了,必须得最简单启动后,在容器内部进行密码重置,但是现在数据卷的持久化还没有解决。