在所有需要 MySQL/MariaDB 这类数据库管理系统功能的用户中,有些人可能希望以命令行 SQL 提示符之外的方式与系统交互。
phpMyAdmin 正是为此而生:它让用户能够通过 Web 界面使用 SQL 进行交互。在本指南中,我们将讨论如何安装并加固 phpMyAdmin,以便您能够在 Ubuntu 或 Debian 系统上安全地用它来管理数据库。

前提条件
要按照本指南操作,您需要具备:
- 一台 Ubuntu 服务器。最好有一个具备管理权限的非 root 用户,以及一个已配置的防火墙。要完成这些配置,请参照我们的 Ubuntu 服务器初始配置指南。
- 在您的 Ubuntu 服务器上已安装 LAMP 环境(Linux、Apache、MySQL 和 PHP)。如果尚未完成,您可以参照在 Ubuntu 22.04 上安装 LAMP 环境的指南。
此外,使用 phpMyAdmin 这类软件时有一些重要的安全考量,因为它:
- 直接与您的 MySQL 安装进行通信
- 使用 MySQL 凭据处理身份验证
- 执行任意 SQL 查询并返回结果
基于这些原因,也因为它是一款被广泛部署、并且经常成为攻击目标的 PHP 应用程序,您绝不应在远程系统上通过没有任何安全防护的普通 HTTP 连接运行 phpMyAdmin。
如果您还没有配置好带 SSL/TLS 证书的域名,可以参照在 Ubuntu 22.04 上使用 Let’s Encrypt 保护 Apache 的指南。这需要注册一个域名、为您的服务器创建 DNS 记录,并配置一个 Apache 虚拟主机。
第 1 步 —— 安装 phpMyAdmin
您可以使用 APT(Linux 的软件包管理器)从 Ubuntu 官方仓库安装 phpMyAdmin。
以非 root 的 sudo 用户身份,如果您最近没有更新过服务器的软件包索引,请先更新它:
接着就可以安装 phpmyadmin 软件包了。官方文档建议在安装该软件包的同时,在服务器上再安装几个 PHP 扩展,以启用某些功能并提升性能。
如果您已经按照前提条件中的 LAMP 环境教程操作,其中若干模块已随 php 软件包一并安装。不过,仍建议同时安装以下软件包:
- php-mbstring:用于处理非 ASCII 字符串并在不同编码之间转换字符串的模块
- php-zip:该扩展支持向 phpMyAdmin 上传 .zip 文件
- php-gd:启用对 GD 图形库的支持
- php-json:为 PHP 提供 JSON 序列化支持
- php-curl:让 PHP 能够使用不同协议与各类服务器交互
执行以下命令在您的系统上安装这些软件包。但请注意,安装过程会要求您做出若干选择,以便正确配置 phpMyAdmin。我们稍后会逐一说明这些选项:
为了正确完成安装配置,当系统提示时,您应当选择以下选项:
- 在选择服务器时,请选择 apache2
当询问您是否希望使用 dbconfig-common 配置数据库时,请选择「是」。
随后系统会要求您为 phpMyAdmin 选择并确认一个 MySQL 应用密码。
安装过程会把 phpMyAdmin 的 Apache 配置文件放入 /etc/apache2/conf-enabled/ 目录,该目录会被自动读取。要完成 Apache 与 PHP 配合 phpMyAdmin 工作的配置,本节教程中剩下的唯一任务就是显式启用 PHP 的 mbstring 扩展,您可以通过输入以下命令来完成:
然后重启 Apache,使您的修改生效:
现在 phpMyAdmin 已经安装完毕,并配置为与 Apache 协同工作。不过,在您登录并开始操作 MySQL 数据库之前,还需要确认您的 MySQL 用户拥有与该程序交互所必需的权限。
第 2 步 —— 身份验证与权限
当您在服务器上安装 phpMyAdmin 时,系统自动创建了一个名为 phpmyadmin 的数据库用户,用于执行该程序的某些底层进程。与其使用安装时设置的管理员密码以该用户身份登录,更推荐的做法是通过 phpMyAdmin 界面,以一个专门用于管理数据库的用户身份登录。
为专用 MySQL 用户配置访问权限
另一种做法是,有些人可能认为使用一个专用用户登录 phpMyAdmin 更符合自己的工作流程,也更安全。
为此,请重新打开 MySQL shell:
如果您已按上一节所述为 root 用户启用了密码认证,那么需要执行以下命令,并在提示时输入密码以登录:
接着,创建一个新用户并为其设置一个强密码:
注意:同样地,根据您所安装的 PHP 版本,您可能希望让新用户使用 mysql_native_password 而不是 caching_sha2_password 进行认证。
然后,为您的新用户授予相应的权限。例如,您可以用下面这条命令,授予该用户对数据库中所有表的权限,以及添加、修改和删除用户权限的能力:
之后,退出 MySQL shell:
现在您可以访问 Web 界面了:在浏览器中输入服务器的域名或公网 IP 地址,后面加上 /phpmyadmin:

登录该界面,可以使用 root 身份,也可以使用您刚刚配置的新用户名和密码。
登录后,您会被引导至 phpMyAdmin 的用户界面。

第 3 步 —— 加固 Web 访问
由于使用广泛,phpMyAdmin 经常成为攻击者的目标。因此,加强它的安全性以防止未经授权的访问至关重要。方法之一是使用 Apache 内置的 .htaccess 身份验证与授权功能。
为此,首先需要修改 phpMyAdmin 的 Apache 配置文件,以启用 .htaccess 文件的覆盖功能。
用您习惯的文本编辑器打开位于 Apache 配置目录中的 phpmyadmin.conf 文件。这里我们使用 nano:
在 <Directory /usr/share/phpmyadmin> 小节中添加 AllowOverride All 指令,如下所示:
添加该行后保存并关闭文件。如果您使用的是 nano,请按 CTRL + X,然后按 Y 和回车键。
要使修改生效,请重启 Apache:
现在该创建一个 .htaccess 文件来加强安全性了。
在该应用程序的目录中,以 root 权限创建并打开这个文件:
在其中添加以下内容:
这些指令分别表示:
- 要使用的身份验证类型。
- 身份验证对话框中显示的提示信息。
- 存放密码的文件位置。
- 只有通过身份验证的用户才能访问该资源。
完成后,保存并关闭文件。
现在创建 .htpasswd 文件,并在其中添加第一个用户:
如果您想添加另一个用户,执行时不要带 -c 参数:
重启 Apache 以启用通过 .htaccess 的身份验证:
从现在起,访问您的 phpMyAdmin 子目录时,会先要求您完成一次额外的身份验证。登录地址仍然是:

通过 Apache 的身份验证之后,您会进入 phpMyAdmin 常规的登录页面,在那里输入您的 MySQL 凭据。
这一层额外的安全防护非常必要,因为 phpMyAdmin 过去曾暴露出多个漏洞。
结语
现在,您的 phpMyAdmin 应该已经在 Ubuntu 22.04 服务器上配置完毕并可以使用了。通过这个界面,您可以管理数据库、用户和数据表,并执行各种常见操作。
致谢
本指南由 Awoui 根据 Brian Boucheron/DigitalOcean 的作品改编,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
