• 64160

    文章

  • 632

    评论

  • 59

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Docker phpMyAdmin 连接访问宿主机本地mysql

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

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
    
     本地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)
    
  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 在这里插入图片描述


 转载至链接:https://my.oschina.net/u/1440971/blog/3040286。

695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

欢迎来到梁钟霖个人博客网站。本个人博客网站提供最新的站长新闻,各种互联网资讯。 还提供个人博客模板,最新最全的java教程,java面试题。在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿大家一起进步!

转载原创文章请注明出处,转载至: 梁钟霖个人博客www.liangzl.com

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤
注册梁钟霖个人博客