如何让外部主机访问到docker中的数据库

之前有人写过这方面的,不过没有怎么细讲数据库的授权,我觉得做下测试还行,但在生产环境中我觉得风险还是挺大的。

环境:docker容器中是ubuntu+mysql-server,外部主机ubuntu+mysql-client工具。

1.在docker容器中进入mysql-server,为  root@外部主机IP   授权,这里要指定ip的作用是只有从我本机进行访问的root用户有对应权限,其他ip的root用户最好是禁掉的,或者说可以为root@%(这个%指任意ip但是不包括localhost这个特殊值)进行指定权利授权,根据实际使用情况进行操作;

2.修改mysql的配置文件,把bind_address给注释掉。然后重启mysql;

3.运行docker容器时进行端口映射,-P 外部主机端口号:3306;

4.在外部主机访问docker的mysql服务时:
命令:                                                                               进入MySQL的角色

mysql -uroot -h 外部主机IP -P3306 -p                              root@外部主机IP

mysql -uroot -h 0.0.0.0 -P3306 -p   root@%

由于我没有对root@%没有授权,所以第二个是无法访问的,第一个则可以实现访问(这里的外部主机并不是指其他机器,是指docker容器所在的机器)

在mysql中127.0.0.1和localhost总是不同的概念,有没有DBA解答下啊,还有为什么上述第4步两个命令-h不是指定访问主机的ip,为什么会有个0.0.0.0?..

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值