Docker+phpMyAdmin


    Docker是一個開源的應用容器引擎,它能夠實現應用部署的自動化。此外,容器是完全使用沙箱機制,容器之間的環境相互獨立,不會相互干擾。

    phpMyAdmin能夠為你的MySQL提供直觀、方便的Web管理界面,非常好用。

在這里,由於我不想讓phpMyAdmin的PHP、Apache環境與服務器上原有環境混雜到一起,因此采用Docker+phpMyAdmin的方式。
1. 修改MySQL配置

和遠程訪問一個道理,要想從容器中的phpMyAdmin訪問運行在服務器上的MySQL,必須先修改MySQL配置文件,允許非localhost的IP訪問。

打開/etc/mysql/mysql.conf.d/mysqld.cnf配置文件,進行如下修改:

bind-address = localhost
# 找到上式,修改為
bind-address = xxx.xx.xx.x # 你的docker0的ip地址
# 或者修改為
bind-address = 0.0.0.0 # 表示允許任意ip地址訪問

    1
    2
    3
    4
    5

然后,還需要將你的賬號也設置為允許從遠程登陸(默認為localhost)。為了完成這一操作,先通過localhost登入mysql,更改mysql數據庫里的user表里對應你賬號的host項,從localhost改成%。具體操作如下:

# 使用mysql數據庫
use mysql;
# 將root賬號(可替換成其他)的host修改為%
update user set host = '%' where user = 'root';
# 查看修改結果
select host, user from user;

    1
    2
    3
    4
    5
    6

最后,不要忘記重啟mysql:sudo service mysql restart

至此,你的MySQL和對應賬號已經開放了從Docker容器中訪問的權限。
2. 創建phpMyAdmin鏡像

# PMA_HOST設置為連接的MySQL主機名或ip地址
# PMA_PORT設置為端口號
# 8080:80,將宿主機的8080端口映射到鏡像的80端口
docker run -d \
    --name myadmin \
    -e PMA_HOST=$(ip route show | grep docker0 | awk '{print $9}') \
    -e PMA_PORT=3306 \
    -p 8080:80 \
    phpmyadmin/phpmyadmin

    1
    2
    3
    4
    5
    6
    7
    8
    9

    值得一提的是,這里是通過橋接網絡模式(bridge mode)運行的鏡像,因此在鏡像中可通過docker0訪問宿主網絡。

3. 訪問數據庫

此時,可以通過8080端口訪問到phpMyAdmin的管理界面了,即http://your_domain_name:8080/。
4. One More Thing

把MySQL隨意地暴露在網絡下無疑會帶來安全隱患,從安全角度考慮,應該為防火牆設置白名單規則,只有白名單的IP才能夠連接數據庫。

# ufw防火牆,提供一個參考思路而已
ufw insert 1 allow from 172.17.0.3 to any port 3306
————————————————


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM