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

问题:

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

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

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

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

     进入 mysql 容器[root@centos7-71 application]# docker exec -it mysql57 bash本地mysqlroot@c49318865d09:/# mysql -u root -p查询 mysql usermysql> use mysqlmysql> select User,host from user;+---------------+-----------+| User          | host      |+---------------+-----------+| root          | %         || mysql.session | localhost || mysql.sys     | localhost || root          | localhost |+---------------+-----------+4 rows in set (0.00 sec)
    
  5. 同理,宿主机本地的 mysql 需要配置访问控制,允许非 localhost 或 127.0.0.1 的 用户(缺省为root)

2、参考

https://blog.csdn.net/weixin_36296538/article/details/84189706

3、宿主机 mysql 设置

  1. 修改 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
  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 容器

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

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

  3. 启动容器,映射 宿主机 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、测试验证

curl 127.0.0.1:9997
浏览器测试
http://192.168.1.192:9997/index.php

Docker phpMyAdmin 连接访问宿主机本地mysql相关推荐

  1. docker容器无法访问宿主机报出 No route to host

    项目场景: 提示:docker容器无法访问宿主机报出 No route to host: 例如:防火墙环境下,docker容器无法访问宿主机的其他应用端口 原因分析: 在进行docker部署的时候我们 ...

  2. 【docker】使用云服务器运行docker时无法访问宿主机的映射端口

    导语:这几天在学docker,在学到容器映射端口时,总是无法访问到宿主机的对应端口,这就很纳闷了,IP地址和端口号都是对应的,eth0的IP地址加上容器外端口.不过想了一下,唯一区别是我在云服务器上跑 ...

  3. docker 连接宿主机的 MySQL

    docker 连接宿主机的 MySQL 本文地址:https://blog.lucien.ink/archives/505 在实际生产过程中,docker 内的服务有时需要连接宿主机的 MySQL,在 ...

  4. CentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口

    CentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口 注意第一种方法是在网上找的 , 我并没有执行成功 , 但是他分析的很不错, 可以参考第二种方法 首先需要明确docker的 ...

  5. docker 容器访问宿主机的解决方式

    需求 基于本地docker的自研及使用需要,希望docker容器的服务能连接到宿主机提供的服务. 背景 网络上查阅了大量的资料,基本的解决办法是通过手动查阅IP的方式进行, 但docker宿主机的ip ...

  6. mac for docker访问宿主机服务

    pod访问mac主机网络 Docker For Mac的Docker Daemon是运行于虚拟机(xhyve)中的, 而不是像Linux上那样作为进程运行于宿主机,因此Docker For Mac没有 ...

  7. 容器访问宿主机数据库_docker从容器中怎么访问宿主机

    展开全部 例如你的62616964757a686964616fe4b893e5b19e31333433626437docker环境的虚拟IP是192.168.99.100,那么宿主机同样会托管一个和1 ...

  8. docker中容器与宿主机之间的网络关系

    接上一篇jupter远程访问 docker中容器与宿主机之间的网络关系 一.PC上的网络关系 1.网卡的物理地址 网卡的物理地址(MAC地址):是网卡的唯一标识.由生产厂商写入网卡中.MAC地址就如同 ...

  9. mysql断网_断网的情况上如何访问本机的mysql

    断网的情况下怎么访问本机的mysql 我发现把网络断掉后mysql就不能访问了. 使用phpmyadmin(http://localhost/phpmyadmin/index.php?)访问,输入用户 ...

  10. 17.Docker 容器时间与宿主机同步

    Docker容器时间与宿主机同步 BY 赫墨拉 · PUBLISHED 2018年7月10日 · UPDATED 2019年6月10日 问题描述: 在我们平时使用docker,运行我们的应用的时候,访 ...

最新文章

  1. 公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥
  2. 最受欢迎的应用服务器
  3. cad怎么快速算面积_用cad算面积的快捷键方法步骤详细,大朗CAD培训班
  4. centos7 如何安装部署k8s_如何在centos7上安装FreeIPA的客户端
  5. 量子物理 詹班 计算机,(电气系计算机系詹班)量子物理作业答案
  6. [转载] Python使用list.reverse()返回None
  7. 环境在c盘_笔记本电脑常见故障--清理C盘空间
  8. Python 进阶之路 (五) map, filter, reduce, zip 一网打尽
  9. uinty 为什么一旋转鼠标镜头就倒了_Unity3D使用鼠标旋转缩放平移视角
  10. python3 shell,python3执行shell命令
  11. 如何位图转换矢量图或者数字油画底稿
  12. Threejs实现天空盒,全景场景,地面草地
  13. 直接可以用的Python和OpenCV检测及分割图像的目标区域例子
  14. 英语·句子的五大结构
  15. 单片机 MSP430 串口 计算 波特率
  16. 手撕生产者-消费者模式 | P问题、NP问题
  17. OKR是上下同欲的载体
  18. java—Web(项目)—数据库(插入数据)
  19. css画直角三角形,关于CSS画三角形的那些事
  20. [WinError 206] 文件名或扩展名太长(组策略值修改 解除windows文件名 字符长度限制)

热门文章

  1. 不错的学习博客,有时间看看
  2. 为Android GridView 设置行背景
  3. 出埃及记:摩西劈开红海
  4. [原创]三维建模软件的尝试
  5. jQuery file upload测试
  6. [Luogu] 树状数组
  7. 模拟(堆):USACO Jan11 瓶颈
  8. Delphi XE不生成__history目录
  9. 数据库中单个表数据备份
  10. C#操作excel(NPOI篇)