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
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章