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

来源:互联网 发布:网络惊魂 百度云 编辑:程序博客网 时间:2024/05/22 02:11

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

环境: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?..