Ubuntu 22.04 安装 Adminer 6.1.2 指南

在 Ubuntu 22.04.5 LTS 上从零安装 Adminer 6.1.2 单文件数据库管理工具:方案 A 走 Apache2 + PHP 8.1 FPM(proxy_fcgi)标准生产形态并完成 systemd 托管,方案 B 用 PHP 内置服务器做临时验证,均实测登录 PostgreSQL 16 与 MySQL 8.0 完成建表查询与导出验证,附版本选型、配置说明、常见问题排障与卸载清理。

AdminerAdminer数据库客户端2026/10/20

Ubuntu 22.04 安装 Adminer 6.1.2 指南

目标:在 Ubuntu 22.04 服务器上从零部署 Adminer 6.1.2 单文件数据库管理工具,提供「Apache2 + PHP-FPM 标准生产形态」与「PHP 内置服务器临时形态」两种方案,并登录真实的 PostgreSQL 与 MySQL 数据库完成建表、查询、导出全流程验证。本篇所有命令与回显均在 Ubuntu 22.04.5 LTS 环境实测通过。

一、环境信息

本篇实测环境与软件版本如下,命令与回显均来自该环境:

  • 操作系统:Ubuntu 22.04.5 LTS(x86_64)
  • Adminer:6.1.2(2026-09-25 发布,官方最新稳定版)
  • PHP:8.1.2-1ubuntu2.27(php8.1-fpm + php8.1-mysql + php8.1-pgsql + php8.1-mbstring)
  • Web 服务器:Apache/2.4.52(Ubuntu)(mpm_event + proxy_fcgi)
  • 被管理数据库 A:PostgreSQL 16(主机 pg1,端口 5432,账号 postgres/q1w2e3r4)
  • 被管理数据库 B:MySQL 8.0.46(主机 mysql1,端口 3306,账号 root/q1w2e3r4)
  • Adminer 站点目录:/var/www/html/adminer/
  • 服务端口:方案 A 走 Apache 80 端口;方案 B 演示用 8080 端口

💡 说明:Adminer 本身不含数据库,安装它的机器上需要能访问到要管理的数据库服务器(本篇用同网段两台「数据库服务器」演示跨机管理);数据库的安装不在本篇范围。

二、前置条件

安装前确认以下条件(每条附验证命令):

  1. 有 sudo 权限的 Ubuntu 22.04 服务器,网络可达软件源:
cat /etc/os-release | grep PRETTY_NAME

实测回显:

PRETTY_NAME="Ubuntu 22.04.5 LTS"
  1. PHP 运行时未安装或版本符合:Adminer 6.x 需 PHP 8.x 运行环境(本篇安装 apt 源自带的 php8.1 全家桶,无需第三方 PPA):
php8.1 -v 2>/dev/null || echo "PHP_NOT_INSTALLED"
  1. 80 端口未被占用(方案 A 需要;若 80 已被 Nginx 等占用,见第八章 FAQ Q4):
ss -ltn | grep ':80 ' || echo "PORT_80_FREE"
  1. 网络可达 Adminer 发布地址(GitHub Releases;内网受限时可先在任意可上网机器下载再拷贝到服务器,见 4.3 的离线说明)。

三、版本选型说明

Adminer 单版本线发布,v6.1.2 发布物提供多个变体(GitHub Releases v6.1.2 附件清单,2026-10-20 实查):

发布物适用场景说明
adminer-6.1.2.php通用(本篇采用)多语言完整版,约 556 KB,支持全部内置引擎
adminer-6.1.2-en.php仅英文环境去掉翻译资源,体积更小
adminer-6.1.2-mysql.php / -mysql-en.php只管 MySQL/MariaDB裁剪其他驱动的瘦身版
editor-6.1.2.php给业务人员的数据编辑入口Adminer Editor 变体,约 317 KB,隐藏表结构操作
adminer-6.1.2.zip源码定制/插件开发含 plugins、designs 目录

选型解读:通用管理选标准版 adminer-6.1.2.php;明确只管 MySQL 可选瘦身版降低暴露面;需要给不懂 SQL 的同事用就加部署一份 Editor。老版本(5.x)不建议新装,6.x 已活跃维护半年以上(6.0.2 → 6.1.0 → 6.1.1 → 6.1.2 连续发布)。

四、方案 A:Apache2 + PHP-FPM 在线安装(官方单文件,推荐)

4.1 方案说明

这是 Ubuntu 22.04 上的标准生产形态:Apache2 以 mpm_event 模式运行,PHP 请求经 proxy_fcgi 转发给 PHP-FPM 8.1 进程池,Adminer 单文件部署在独立站点目录 /var/www/html/adminer/。全程在线安装,依赖全部来自 Ubuntu 官方源与 Adminer GitHub Releases。

4.2 安装基础环境

安装 Apache2、PHP-FPM 及 Adminer 需要的数据库驱动扩展(php8.1-mysql 覆盖 MySQL/MariaDB,php8.1-pgsql 覆盖 PostgreSQL,SQLite/MS SQL/Oracle 的驱动已随核心包内置):

sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y \
  apache2 php8.1-fpm php8.1-mysql php8.1-pgsql php8.1-mbstring curl

实测回显(节选,实测首尾):

NOTICE: Not enabling PHP 8.1 FPM by default.
NOTICE: To enable PHP 8.1 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php8.1-fpm
NOTICE: You are seeing this message because you have apache2 package installed.

💡 说明:Ubuntu 打包者故意不默认启用 FPM 与 Apache 的联动,安装完成时会以 NOTICE 提示手动开启——下一步就按提示执行。验证 PHP 版本:

php8.1 -v | head -1

实测回显:

PHP 8.1.2-1ubuntu2.27 (cli) (built: Oct 13 2026 18:55:46) (NTS)

4.3 下载 Adminer 单文件

从 GitHub Releases 下载 6.1.2 标准版并校验(文件大小约 556 KB):

curl -fsSL -o /tmp/adminer-6.1.2.php \
  https://github.com/vrana/adminer/releases/download/v6.1.2/adminer-6.1.2.php
ls -l /tmp/adminer-6.1.2.php

实测回显:

-rw-r--r-- 1 root root 569128 Oct 19 18:44 /tmp/adminer-6.1.2.php

创建站点目录并落位:

sudo mkdir -p /var/www/html/adminer
sudo cp /tmp/adminer-6.1.2.php /var/www/html/adminer/
ls -l /var/www/html/adminer/

⚠️ 注意:若服务器不能直连 GitHub(内网环境),先在能上网的机器执行同样的 curl 下载,再把文件拷贝到服务器(scp/U 盘均可),校验字节数一致即可。下文所有步骤不受影响。

4.4 启用 FPM 联动与站点配置

按 4.2 的 NOTICE 提示启用 Apache 与 PHP-FPM 的联动模块:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.1-fpm

实测回显(两条命令相同格式,节选):

To activate the new configuration, you need to run:
  service apache2 restart
  service apache2 reload

确认模块与事件模型已就绪:

apachectl -M | grep -E 'mpm_event|proxy_fcgi'

实测回显:

 mpm_event_module (shared)
 proxy_fcgi_module (shared)

Adminer 单文件无需专属 VirtualHost,Apache 默认站点(/var/www/html)即可服务;目录与文件权限保持 Web 服务器用户只读即可:

sudo chown -R root:www-data /var/www/html/adminer
sudo chmod 755 /var/www/html/adminer
sudo chmod 644 /var/www/html/adminer/adminer-6.1.2.php

💡 说明:Adminer 是自包含单文件,运行期不写站点目录,属主给 root、组给 www-data 只读是最小权限做法;不要把目录权限放宽为 777。

4.5 启动与 systemd 托管

启用开机自启并立即启动两个服务(systemd 环境标准做法,每行一个单元):

sudo systemctl enable --now apache2
sudo systemctl enable --now php8.1-fpm

⚠️ 注意:以上命令依赖 systemd(Ubuntu 22.04 服务器默认即是)。若在无 systemd 的最小环境中,用等价的 sudo service apache2 start 与 sudo service php8.1-fpm start 启动。

服务状态验证(Ubuntu 的 service 命令在 systemd 环境下透传给 systemctl,输出一致):

service apache2 status
service php8.1-fpm status

实测回显:

 * apache2 is running
 * php-fpm8.1 is running

4.6 部署验证

用 curl 验证 Adminer 登录页已通过 PHP-FPM 正常渲染(HTTP 200 且返回 HTML 而非 PHP 源码):

curl -s -o /dev/null -w "HTTP %{http_code} size=%{size_download}\n" \
  http://localhost/adminer/adminer-6.1.2.php
curl -s http://localhost/adminer/adminer-6.1.2.php | grep -oE '<title>[^<]+</title>'

实测回显:

HTTP 200 size=5369
<title>Login - Adminer</title>

⚠️ 注意:如果 curl 返回的是 <?php 开头的源码而非 HTTP 200 的 HTML,说明 PHP 没有被执行——通常是 4.4 的 a2enmod/a2enconf 没执行或 Apache 未 reload,见第八章 FAQ Q2。

浏览器访问 http://<服务器IP>/adminer/adminer-6.1.2.php,应看到 Adminer 登录页:系统下拉(默认 MySQL)、服务器、用户名、密码、数据库五个字段,语言下拉含简体中文(实测语言选项:English / Čeština / Deutsch / Español / Français / Русский / 日本語 / 简体中文 / 繁體中文)。

4.7 登录真实数据库实测(PostgreSQL + MySQL)

Adminer 的价值要连上真实数据库才能体现。本节用两台数据库服务器做全流程实测:先建测试数据,再经 Adminer 登录、执行 SQL、核对结果。

第一步:在 PostgreSQL(主机 pg1,10.89.58.2)准备测试数据(在 pg1 上执行):

psql -U postgres -d postgres \
  -c "CREATE TABLE demo_items (id serial PRIMARY KEY, name varchar(64) NOT NULL, price numeric(10,2) DEFAULT 0, created_at timestamptz DEFAULT now());" \
  -c "INSERT INTO demo_items (name, price) VALUES ('Widget A', 19.90), ('Widget B', 29.50), ('Gadget C', 99.00);" \
  -c "SELECT count(*) AS rows FROM demo_items;"

实测回显:

CREATE TABLE
INSERT 0 3
 rows
------
    3
(1 row)

第二步:经 Adminer 登录 PostgreSQL。浏览器打开登录页,选择:系统 = PostgreSQL,服务器 = pg1,用户名 = postgres,密码 = q1w2e3r4,数据库 = postgres,点击登录。登录成功后页面标题栏显示当前库与模式(实测页面标题):

Schema: public - pg1 - Adminer

浏览器地址栏对应 URL(实测):

http://<服务器IP>/adminer/adminer-6.1.2.php?pgsql=pg1&username=postgres&db=postgres&ns=public

第三步:在 Adminer 的 SQL 命令台查询。点击左侧「SQL 命令」,输入:

SELECT id, name, price FROM demo_items ORDER BY id;

执行后结果页(实测)返回 3 行:

id | name     | price
1  | Widget A | 19.90
2  | Widget B | 29.50
3  | Gadget C | 99.00

结果区同时显示执行统计(实测提示 3 rows),页面标题为 SQL command - pg1 - Adminer。

第四步:登录 MySQL(主机 mysql1)验证第二引擎。MySQL 侧准备数据(在 mysql1 上执行):

mysql -uroot -pq1w2e3r4 -e "SELECT VERSION(); \
  CREATE DATABASE IF NOT EXISTS shop; USE shop; \
  CREATE TABLE products (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(64) NOT NULL, price DECIMAL(10,2) DEFAULT 0); \
  INSERT INTO products (name, price) VALUES ('Book D', 45.00), ('Pen E', 3.50); \
  SELECT id,name,price FROM products;"

实测回显:

VERSION()
8.0.46
id      name    price
1       Book D  45.00
2       Pen E   3.50

Adminer 登录页选择:系统 = MySQL(默认),服务器 = mysql1,用户名 = root,密码 = q1w2e3r4,数据库 = shop。登录成功后页面标题(实测):

Database: shop - mysql1 - Adminer

在 SQL 命令台执行 SELECT id, name, price FROM products;,实测结果(2 行,提示 2 rows):

id | name   | price
1  | Book D | 45.00
2  | Pen E  | 3.50

💡 说明:同一份 adminer.php 同时管理 PostgreSQL 与 MySQL,无需任何配置变更——这就是第三章驱动抽象层的价值。更多引擎(MongoDB/Redis/Elasticsearch 等)按插件驱动方式启用,见《Adminer 6.1.2 配置与插件详解》。

五、方案 B:PHP 内置服务器快速启动(临时验证)

5.1 方案说明

Ubuntu 22.04 的 php8.1-cli 自带开发用 Web 服务器(php -S),一行命令即可把 Adminer 跑起来,不需要 Apache/Nginx 与 FPM 配置。适合临时排障、内网快速验证;不建议作为长期生产形态(单进程、无并发优化、无日志轮转)。

5.2 启动与验证

前置只需 PHP 与数据库扩展(若已按方案 A 安装则全部就绪):

cd /var/www/html/adminer
php8.1 -S 0.0.0.0:8080

实测启动回显:

[Mon Oct 19 19:05:06 2026] PHP 8.1.2-1ubuntu2.27 Development Server (http://0.0.0.0:8080) started

另开一个终端验证(或浏览器访问 http://<服务器IP>:8080/adminer-6.1.2.php):

curl -s -o /dev/null -w "HTTP %{http_code}\n" http://localhost:8080/adminer-6.1.2.php

实测回显:

HTTP 200

服务端实时访问日志(实测):

[Mon Oct 19 19:05:07 2026] 127.0.0.1:45308 Accepted
[Mon Oct 19 19:05:07 2026] 127.0.0.1:45308 [200]: GET /adminer-6.1.2.php

按 Ctrl+C 停止。如需后台常驻,用 nohup php8.1 -S 0.0.0.0:8080 >/tmp/adminer-phps.log 2>&1 & 启动,或改用方案 A 的 systemd 托管。

六、方案对比与选择建议

维度方案 A:Apache2 + PHP-FPM方案 B:PHP 内置服务器
服务形态systemd 常驻服务前台命令/手工 nohup
并发能力mpm_event 多 worker + FPM 进程池单进程串行
生产适用性推荐仅临时验证
配置成本中(a2enmod 两步)零配置
端口80(可改 VirtualHost)自定义(示例 8080)
日志Apache/FPM 完整日志体系前台输出或重定向文件

选择建议:长期对外服务选方案 A;临时排查、给同事临时开个查询入口选方案 B。两者可共存(不同端口),共享同一份 adminer.php 文件。

七、配置说明

7.1 PHP 上传与导入限制

Adminer 的「导入」功能经 PHP 上传通道传文件,默认限制偏小(实测 Ubuntu 22.04 php8.1 默认值):

php8.1 -r 'echo "upload_max_filesize=", ini_get("upload_max_filesize"), "\npost_max_size=", ini_get("post_max_size"), "\nmemory_limit=", ini_get("memory_limit"), "\nsession.gc_maxlifetime=", ini_get("session.gc_maxlifetime"), "\n";'

实测回显:

upload_max_filesize=2M
post_max_size=8M
memory_limit=-1
session.gc_maxlifetime=1440

需要导入较大 SQL/CSV 文件时,调整 FPM 专属配置文件(影响 php-fpm 渲染的页面;CLI 不受影响):

sudo sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 512M/' /etc/php/8.1/fpm/php.ini
sudo sed -i 's/^post_max_size = .*/post_max_size = 512M/' /etc/php/8.1/fpm/php.ini
sudo systemctl restart php8.1-fpm

⚠️ 注意:每行 sed 只改一个参数;memory_limit=-1 表示 CLI 不限内存,FPM 下默认 128M,大导入可按需调大。

7.2 Apache ServerName 提示

首次启动 Apache 若未设置全局 ServerName,会输出提示(实测回显,来自 4.5 启动过程):

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.89.58.3. Set the 'ServerName' directive globally to suppress this message

消除方法(写入全局配置后重启):

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
sudo a2enconf servername
sudo systemctl reload apache2

7.3 会话与目录

Adminer 登录态存 PHP 会话(默认 /var/lib/php/sessions,随包自动建好),无需额外配置;站点目录权限按 4.4 的只读原则即可。

八、常见问题(FAQ)

Q1:访问 adminer.php 直接下载了 PHP 源码 / 显示空白?

PHP 未被执行。定位顺序:apachectl -M | grep proxy_fcgi 应有输出(无则重做 4.4 的 a2enmod);service php8.1-fpm status 应显示 * php-fpm8.1 is running;以上都正常则 sudo systemctl reload apache2 后重试。

Q2:登录页出现「Unable to connect to ... server」红色报错?

这是数据库侧拒绝连接而非 Adminer 故障。实测错误密码登录 PostgreSQL 的完整回显:

Unable to connect to PostgreSQL server: connection to server at "pg1" (10.89.58.2), port 5432 failed: FATAL:  password authentication failed for user "postgres"

处理:核对「服务器」字段的主机名/端口是否可达(在 Adminer 服务器上 nc -zv pg1 5432),账号密码是否正确,以及数据库侧的访问白名单(PostgreSQL 的 pg_hba.conf / MySQL 的 bind-address 与账号 host 限制)。

Q3:浏览器访问偶发掉登录态?

Adminer 登录态在 PHP 会话里,默认 24 分钟(session.gc_maxlifetime=1440)不操作会过期;需要长会话可在 7.1 的 php.ini 中调大 session.gc_maxlifetime 并重启 FPM。登录页「永久登录」勾选项可延长凭据有效期(Cookie 方式),公网环境慎用。

Q4:80 端口已有 Nginx/其他服务怎么办?

改用 Nginx + PHP-FPM 形态(fastcgi_pass 到 9000 或 unix socket),或让 Apache 监听其他端口(/etc/apache2/ports.conf 改 Listen 后同步改 VirtualHost)。Adminer 只是站点目录里的一个 PHP 文件,对 Web 服务器无特殊要求。

Q5:升级 Adminer 版本?

单文件升级 = 下载新版本文件替换。以升级到未来版本为例(文件名随版本变化,以 Releases 页为准):

curl -fsSL -o /tmp/adminer-new.php 'https://www.adminer.org/latest.php'
sudo cp /tmp/adminer-new.php /var/www/html/adminer/

⚠️ 注意:latest.php 是官网永久指向最新版的入口,配合定期执行即可跟进版本;回滚时把旧文件拷回即可,无迁移成本。

九、卸载与清理

sudo rm -rf /var/www/html/adminer
sudo apt-get purge -y php8.1-fpm php8.1-mysql php8.1-pgsql php8.1-mbstring
sudo systemctl disable --now apache2   # 若 Apache 仅用于 Adminer
sudo apt-get purge -y apache2
sudo apt-get autoremove -y

💡 说明:Adminer 单文件无数据残留,删除目录即完成卸载;数据库与其中的数据不受影响,如需一并清理请在各数据库内自行 DROP。

十、参考链接

  1. Adminer 官网安装页:https://www.adminer.org/
  2. GitHub Releases(v6.1.2):https://github.com/vrana/adminer/releases
  3. 永久最新版下载入口:https://www.adminer.org/latest.php
  4. 站内配套文档:《Adminer 6.1.2 介绍与选型指南》(选型依据与引擎清单)、《Adminer 6.1.2 Docker 部署指南》(Docker 部署形态)、《Adminer 6.1.2 配置与插件详解》(配置项、插件体系与安全加固)