phpmyadmin
是一个使用PHP语言开发的工具软件,可以通过web方式操作mysql
数据库,例如添加、查询、变更、删除数据等。
在容器时代之前,我们部署 phpmyadmin
应用,需要先准备好php
程序运行环境、然后下载源码、配置数据库等,最后完成部署工作。
而在容器时代,部署 phpmyadmin
应用则变得简单,下载 phpmyadmin
官方提供的 Docker
镜像,然后运行容器就可以了。例如运行一个 phpmyadmin 容器。
# 运行容器自动下载镜像,仓库在国外时间可能较长
# PMA_HOST变量,指 mysql服务器地址
docker run --name myadmin -d \
-e PMA_HOST=mysql-server-host \
-p 8080:80 \
phpmyadmin/phpmyadmin
容器镜像: phpmyadmin:latest
容器系统: debian 9 (stretch)
Docker主机: Ubuntu Server 16.04
应用策略: 仅为测试环境提供 phpmyadmin 工具。
注意事项: 为了数据安全限制了使用条件:
因为增加了限制规则,所以我们需要定制 phpmyadmin 镜像,附加修改后 config.inc.php 配置文件。
1. 镜像构建目录
tree ./
├── conf
│ └── config.inc.php
└── Dockerfile
1 directory, 2 files
2. 修改配置文件
# 配置文件从 phpmyadmin 容器中获得:
# docker run --rm phpmyadmin:latest cat /etc/phpmyadmin/config.inc.php >> config.inc.php
# 编辑 config.inc.php
# 查找 $cfg['Servers'][$i]['AllowNoPassword'] 行
# 并添加以下行,ruser 替换自己的只读用户
$cfg['Servers'][$i]['AllowRoot'] = false;
$cfg['Servers'][$i]['AllowDeny']['order'] = 'explicit';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array('allow ruser from all');
MySQL 授权语句可以参考这篇文章
3. Dockerfile 文件
cat Dockerfile
# custom phpmyadmin
FROM phpmyadmin/phpmyadmin
MAINTAINER dongnan #<@微信公众号:运维录>
# configure file
COPY conf/config.inc.php /etc/phpmyadmin/config.inc.php
# env
ENV TZ=Asia/Shanghai \
LANG=en_US.UTF-8
4. 构建镜像
docker build -t myadmin:0.0.1 .
# 省略...
Successfully built d8241af7fac8
5. 运行容器根据实际环境,部署 phpmyadmin 容器。
# 我的容器环境为 rancher:
选择项目 -> 添加服务 -> 指定镜像 -> 服务链接(别名) -> 目标服务(数据库) -> 名称(db)
# 名称配置为db 是因为 phpmyadmin 配置文件中mysql数据库主机名设置为 db。
6. 验证
a. 测试 root 用户,提示禁止登录;
b. 测试指定的用户 ruser ,允许登录;
https://hub.docker.com/r/phpmyadmin/phpmyadmin
https://stackoverflow.com/questions/2631269/how-to-secure-phpmyadmin
https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker
最后来总结下文章中的知识点
phpmyadmin
是一个使用PHP语言开发的工具软件,可以通过web方式操作mysql
数据库http
协议明文传输,通过使用 https
协议加密数据,避免此问题。phpmyadmin
只面向公司特定的人员开放,所以防火墙仅信任他们的IP即可。