1、背景

在客户的项目中有很多场景下不允许开发、运维人员,通过本地的客户端工具连接redis、mysql之类的中间件,进行数据的查看、修改等。所以需要一些特定的软件进行连接。

2、工具介绍

phpMyAdmin 是一个用PHP编写的免费软件工具,旨在 通过 Web处理MySQL的管理。phpMyAdmin 支持对 MySQL 和 MariaDB 的广泛操作。常用操作(管理数据库、表、列、关系、索引、用户、权限等)可以通过用户界面执行,同时您仍然可以直接执行任何 SQL 语句。详细介绍可以查看官网

3、部署

部署方式

1.docker run –name myadmin -d –link mysql_db_server:db -p 8080:80 phpmyadmin
这个是使用连接其他mysql容器的方式启动 –link后跟mysql容器ip


2.docker run –name myadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin
指定ip启动,PMA_HOST是指向mysql的ip


3.docker run –name myadmin -d -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin
不特别指定mysql端,登录时再输入,建议使用这个方式启动


反向代理的用法

将变量设置为反向代理使 phpMyAdmin 可用PMA_ABSOLUTE_URI的完全限定路径 。

docker run --name pma -d -e PMA_ARBITRARY=1 -e PMA_ABSOLUTE_URI=http://10.0.0.0/phpmy/ -p 8088:80 phpmyadmin

Nginx反向代理配置文件

location /phpmyadmin/ {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://10.0.0.0:8088/; # phpmyadmin 真实访问路径
}

总结:

在实际的配置过程中,再点‘执行’的时候会跳转到‘404’的状态码,查看路由发现少了‘/phpmyadmin/’在手动补写路由后正常。

解决办法:

在运行docker的时候加入环境变量‘PMA_ABSOLUTE_URI’补齐路由就可以解决该问题。


环境变量总结

  • PMA_ARBITRARY- 当设置为 1 时,将允许与任意服务器的连接
  • PMA_HOST- 定义 MySQL 服务器的地址/主机名
  • PMA_VERBOSE- 定义 MySQL 服务器的详细名称
  • PMA_PORT- 定义 MySQL 服务器的端口
  • PMA_HOSTS- 定义以逗号分隔的 MySQL 服务器地址/主机名列表
  • PMA_VERBOSES- 定义以逗号分隔的 MySQL 服务器详细名称列表
  • PMA_PORTS- 定义逗号分隔的 MySQL 服务器端口列表
  • PMA_USERPMA_PASSWORD- 定义用户名和密码以仅用于config身份验证方法
  • PMA_ABSOLUTE_URI- phpMyAdmin 的完整 URL。在反向代理配置中使用时有时需要。除非需要,否则不要设置它。请参阅文档
  • PMA_CONFIG_BASE64config.inc.php- 如果设置,此选项将使用变量的 base64 解码内容覆盖默认值
  • PMA_USER_CONFIG_BASE64config.user.inc.php- 如果设置,此选项将使用变量的 base64 解码内容覆盖默认值
  • PMA_CONTROLHOST- 设置时,它指向用于存储phpMyAdmin 配置存储数据库数据库的备用数据库主机
  • PMA_CONTROLPORT- 如果设置,将覆盖默认端口 (3306) 用于连接到控制主机以存储phpMyAdmin 配置存储数据库数据库
  • PMA_PMADB- 定义用于phpMyAdmin 配置存储数据库的数据库名称。未设置时,默认不启用高级功能(用户在使用零配置(零配置)功能登录时仍可能启用它们。建议值:phpmyadminpmadb
  • PMA_CONTROLUSER- 为 phpMyAdmin 定义用户名以用于高级功能(controluser
  • PMA_CONTROLPASS- 定义 phpMyAdmin 与controluser一起使用的密码
  • PMA_QUERYHISTORYDB- 当设置为 true时,可以将SQL 历史记录存储到phpMyAdmin 配置存储数据库为false时,历史记录存储在浏览器中,并在注销时清除
  • PMA_QUERYHISTORYMAX- 当设置为整数时,控制历史项目的数量。请参阅文档。默认为25.
  • MAX_EXECUTION_TIME- 如果设置,将覆盖 phpMyAdmin ( $cfg['ExecTimeLimit'] ) 和 PHP max_execution_time (格式为)的最大执行时间(默认 600 秒[0-9+]
  • MEMORY_LIMIT- 如果设置,将覆盖 phpMyAdmin ( $cfg['MemoryLimit'] ) 和 PHP memory_limit的内存限制(默认为 512M) (格式为[0-9+](K,M,G)K 代表千字节,M 代表兆字节,G 代表千兆字节,1K = 1024 字节)
  • UPLOAD_LIMIT- 如果设置,此选项将覆盖 apache 和 php-fpm 的默认值(格式为[0-9+](K,M,G)默认值为 2048K,这将更改upload_max_filesizepost_max_size值)
  • HIDE_PHP_VERSION- 如果定义,此选项将隐藏 PHP 版本 ( expose_php = Off)。设置为任何值(例如HIDE_PHP_VERSION=true)。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐