各个方面叨叨叨

用 Docker 安装 Adminer,临时查看和管理数据库

临时排查数据库问题,可以启动一个 Adminer 容器。查完后停止界面,原有 MySQL 或 PostgreSQL 继续运行。

文章目录

数据库出了问题,临时需要看表结构、查一条记录,未必需要常驻一个大型管理系统。Adminer 可以用一个容器提供网页界面,工作结束后停掉,数据库本身继续运行。

本文让 Adminer 加入现有数据库的 Docker 网络,适合管理自己的 MySQL 或 PostgreSQL。界面能做什么取决于登录角色;处理生产数据前,先使用权限受限的账号。

让 Adminer 接入已有数据库网络

Adminer 只是数据库管理界面,服务器仍要能连接原来的数据库。需要另购 VPS 时,可以从 雨云云服务器 查看配置,先确认网络互通,再考虑界面的访问方式。 优惠码 KuZhuJi。如有消费返利,以购买页所选规格显示的金额为准。

以下命令在 Linux VPS 上执行,需要有 Docker 操作权限。先运行 docker version 和 docker compose version,确认引擎与 Compose v2 都能工作。没有安装 Docker 时,按 Docker 官方安装说明选择对应发行版;不要把其他发行版的仓库配置直接复制过来。

示例工作目录为 /opt/adminer,所有相对路径都以这个目录为基准。VPS_IP、SSH 用户和示例域名需要换成自己的值。端口 8082 若已被占用,只改映射左侧的宿主机端口,并同步修改访问地址。

sudo install -d -m 0750 -o "$(id -u)" -g "$(id -g)" /opt/adminer
cd /opt/adminer
umask 077

先从已有数据库部署中确认网络名和数据库服务名,将它们填入 .env:

DB_NETWORK=your_existing_database_network
DB_HOST=postgres

DB_HOST 也可以是 MySQL 的网络别名。这里不新建数据库、不发布数据库端口。数据库密码在登录时输入,不写进 Compose。修改、删除等操作仍需要相应数据库授权。

将下面内容保存为 compose.yaml:

services:
  adminer:
    image: adminer:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:8082:8080"
    environment:
      ADMINER_DEFAULT_SERVER: ${DB_HOST:?set database hostname}
    networks:
      - database
networks:
  database:
    external: true
    name: ${DB_NETWORK:?set docker network}

在工作目录启动并检查日志:

docker compose config --quiet
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=80

启动后按下面的步骤试用。遇到目录不可写的报错,先核对 UID 和挂载路径,不要直接改成 chmod 777。

用 SSH 隧道打开界面

示例仅把应用端口发布到 VPS 的 127.0.0.1。在自己的电脑上运行以下命令,保留终端窗口,再打开 http://127.0.0.1:8082:

ssh -N -L 8082:127.0.0.1:8082 your_ssh_user@VPS_IP

浏览器里的回环地址是自己的电脑,SSH 把请求转到 VPS。若本地同号端口被占用,可换隧道左侧端口;涉及应用外部 URL 的项目也要一起调整。管理界面无需因此开放公网端口。

登录时别把服务器填成 localhost

在登录页面选择对应数据库类型,服务器填 Docker 网络中的服务名,输入数据库名、账号和密码。Adminer 容器内的 localhost 指向它自己,不是数据库容器。

先查看一张表的字段、索引与前十行记录。如果需要执行 SQL,先在测试库确认语句,再检查页面上显示的数据库名称。删除表、修改结构或批量更新不适合靠“应该选对了”来操作。

查询用途建议单独建立只读角色。需要导出时明确是某张表的数据、表结构,还是多个对象;字符集、视图、触发器与权限并不一定都在一次导出中。导出的 SQL 应在空测试库导入验证。

完成这次排查后,在 VPS 的工作目录运行:

docker compose stop adminer

之后再次使用时执行 docker compose start adminer。停止这个容器不会停止外部网络中的数据库。

哪些内容需要留下

Adminer 只是操作入口,业务数据不保存在这个容器里。保留 Compose 和网络名称即可;正式备份仍由 MySQL 或 PostgreSQL 的备份工具完成,并包含数据库角色等必要信息。

更新管理工具时先记录镜像摘要,拉取新镜像后检查登录、表结构和小范围导出。若登录失败,不要把数据库监听地址和防火墙同时放开;优先检查网络、账号来源限制及数据库驱动。

安装参数和数据路径可对照Adminer 官方镜像说明。

继续阅读 · 数据库 返回顶部