docker上的mysql限制ip访问_Docker phpMyAdmin 连接访问宿主机本地mysql

20190422 之前学习 docker LNMP ,一直都是建立一个 mysql 容器 ,使用 nginx + php 容器来 link 这个 mysql 容器,再建立一个phpmyadmin 容器来管理容器中的mysql

问题:

实际环境中,经常是已经存在本地 mysql ,没有必要再去改动 mysql 环境,甚至转移 mysql 数据

有的系统安装的 mysql 缺省只有一个 locall 的root 账户,有的已经存在一个 % 的 root 账户

让 nginx + php 容器配置的网站,访问宿主机本地数据库的时候,身份已经不是 localhost 或 127.0.0.1 的 root了!

刚刚特意检查了一下 mysql 容器的mysql,已经缺省就存在 % 的 root,所以,他们只需要被 link ,就可以被 php 访问 进入 mysql 容器

[root@centos7-71 application]# docker exec -it mysql57 bash

本地mysql

root@c49318865d09:/# mysql -u root -p

查询 mysql user

mysql> use mysql

mysql> select User,host from user;

+---------------+-----------+

| User | host |

+---------------+-----------+

| root | % |

| mysql.session | localhost |

| mysql.sys | localhost |

| root | localhost |

+---------------+-----------+

4 rows in set (0.00 sec)

同理,宿主机本地的 mysql 需要配置访问控制,允许非 localhost 或 127.0.0.1 的 用户(缺省为root)

2、参考

3、宿主机 mysql 设置

修改 mysql conf ** 为了测试方便,先简单改成了 0.0.0.0 ,通过测试之后,再设置防火墙进行 ip 限制 ** 也可以改成 php 容器ip (phpmyadmin容器)

cd /etc/mysql/mysql.conf.d/ vim mysql conf

# by wzh 20190422

bind-address = 0.0.0.0

# bind-address = 127.0.0.1

检查并增加 % 的 root 账户 (或者其他账户) ** 我这个 ubuntu 18.04 下的 mysql 中,就只有127.0.0.1 的 root 账户 ** 没有按照参考中直接 update 这个 root,而是增加一条 % 的 root账户 记录 ** 简单复制 127.0.0.1 的 root 记录 ,然后修改 Host = % CREATE TEMPORARY TABLE tmp SELECT * FROM user WHERE User = 'root';

UPDATE tmp SET Host='%' WHERE User = 'root';

INSERT INTO user SELECT * FROM tmp WHERE User = 'root';

确认一下: mysql> Select User,Host from user;

+------------------+-----------+

| User | Host |

+------------------+-----------+

| root | % |

| debian-sys-maint | localhost |

| mysql.session | localhost |

| mysql.sys | localhost |

| phpmyadmin | localhost |

| root | localhost |

+------------------+-----------+

6 rows in set (0.00 sec)

4、创建并启动 phpmyadmin 容器

先找个已经存在容器的宿主机,学习一下获取容器 ip 的指令 ip route show ip route show | grep docker0 ip route show | grep docker0 | awk '{print $9}'

安装 Docker phpmyadmin 容器 docker search phpmyadmin docker pull phpmyadmin/phpmyadmin

启动容器,映射 宿主机 9997 端口 对应到 phpmyadmin 容器的 80 端口 docker run -d

--name myadmin

-e PMA_HOST=$(ip route show | grep docker0 | awk '{print $9}')

-e PMA_PORT=3306

-p 9997:80

phpmyadmin/phpmyadmin

5、测试验证

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值