所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
Linux 安全 管理

如何在 Ubuntu 上安装和保护 phpMyAdmin(完整指南)

phpMyAdmin 是最广泛使用的开源工具之一,用于通过基于浏览器的图形界面管理 MySQL 和 MariaDB 数据库。无论您是开发人员、系统管理员还是网站所有者,它都能大大简化复杂的数据库操作——从运行 SQL 查询到导入/导出数据——无需命令行专业知识。

但是,由于 phpMyAdmin 默认可通过公共 URL 访问,将其保持不安全状态是一个严重风险。本综合指南将引导您在 Ubuntu 20.04/22.04 上安装 phpMyAdmin,使用 Apache 配置它,并使用多个安全层加强其防护以防止未授权访问。

前置条件

在开始之前,请确保满足以下要求:

  • 运行 Ubuntu 20.04 或 22.04 的服务器(物理或虚拟)
  • MySQLMariaDB 已安装并正在运行
  • Apache2 web 服务器已安装
  • 具有 sudo 权限的用户账户
  • 指向您服务器的域名或静态 IP 地址
  • (推荐)有效的 SSL 证书以用于加密的 HTTPS 访问

> 提示:如果您还没有服务器环境,请考虑 AlexHost VPS 主机 — 完全托管或非托管 Linux VPS 计划,具有即时配置、root 访问权限和 SSD 存储,非常适合安全运行 phpMyAdmin。

Step 1 — 更新系统和软件包索引

始终先刷新软件包列表并应用任何待处理的系统更新。这确保您安装最新可用版本的 phpMyAdmin 并避免依赖冲突。

sudo apt update && sudo apt upgrade -y

第 2 步 — 安装 phpMyAdmin

使用官方 Ubuntu APT 存储库安装 phpMyAdmin:

sudo apt install phpmyadmin -y

在安装过程中,将出现交互式配置向导。请仔细按照以下步骤操作:

2.1 — 选择 Web 服务器

系统将提示您选择要自动配置的 Web 服务器:

Please choose the web server that should be automatically configured to run phpMyAdmin.

  [*] apache2
  [ ] lighttpd

使用空格键选择 apache2,然后按Tab 键突出显示 <Ok>,然后按Enter

2.2 — 使用 dbconfig-common 配置数据库

接下来,系统将询问您是否使用 dbconfig-common 为 phpMyAdmin 配置数据库:

Configure database for phpmyadmin with dbconfig-common?

选择。然后系统将提示您为 phpMyAdmin 的内部数据库用户输入 MySQL 应用程序密码。您可以输入强密码,也可以将其留空以自动生成密码。

2.3 — 验证安装

安装完成后,确认 phpMyAdmin 已安装:

dpkg -l phpmyadmin

您应该会看到显示已安装软件包版本的一行。

第 3 步 — 为 phpMyAdmin 配置 Apache

在某些 Ubuntu 配置中,phpMyAdmin Apache 配置文件不会自动启用。请手动检查并启用它。

3.1 — 启用 phpMyAdmin 配置

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin

3.2 — 验证配置文件

打开配置文件以查看其内容:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

该文件应包含以下指令(或类似内容):

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAny>
            Require all granted
        </RequireAny>
    </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAny>
            Require all granted
        </RequireAny>
    </IfModule>
</Directory>

使用 CTRL+X 保存并关闭文件,然后按 Y,再按 Enter

3.3 — 重启 Apache

应用配置更改:

sudo systemctl restart apache2

验证 Apache 运行无误:

sudo systemctl status apache2

第 4 步 — 使用 HTTP 基本身份验证保护 phpMyAdmin

默认情况下,任何知道您服务器 IP 地址的人都可以访问 phpMyAdmin 登录页面。添加 HTTP 基本身份验证层会在用户看到 phpMyAdmin 登录表单之前创建第二个密码门。

4.1 — 安装 apache2-utils

sudo apt install apache2-utils -y

4.2 — 创建密码文件和用户

创建一个 .htpasswd 文件并添加您的第一个管理用户。将 your_admin_user 替换为您选择的用户名:

sudo mkdir -p /etc/phpmyadmin
sudo htpasswd -c /etc/phpmyadmin/.htpasswd your_admin_user

系统将提示您输入并确认密码。要稍后添加其他用户(不使用 -c 标志,该标志会覆盖文件):

sudo htpasswd /etc/phpmyadmin/.htpasswd another_user

4.3 — 更新 phpMyAdmin Apache 配置

编辑 phpMyAdmin 配置文件以强制执行身份验证:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

找到 <Directory /usr/share/phpmyadmin> 块并在其中添加以下行:

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    # HTTP Basic Authentication
    AuthType Basic
    AuthName "Restricted Access — Authorized Personnel Only"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

    <IfModule mod_authz_core.c>
        <RequireAny>
            Require valid-user
        </RequireAny>
    </IfModule>
</Directory>

保存并关闭文件。

4.4 — 重启 Apache

sudo systemctl restart apache2

现在,导航到 /phpmyadmin 将首先提示输入 HTTP 身份验证凭据,然后才会显示 phpMyAdmin 登录页面。

第 5 步 — 按 IP 地址限制访问(可选但推荐){#step-5}

为了获得更强的保护,仅限制 phpMyAdmin 访问特定的受信任 IP 地址。如果您始终从固定 IP(例如办公室网络或 VPN)访问服务器,这特别有用。

编辑 phpMyAdmin Apache 配置:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

修改 <Directory> 块以包含基于 IP 的限制:

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /etc/phpmyadmin/.htpasswd

    <RequireAll>
        Require valid-user
        Require ip 203.0.113.50
        # Add more trusted IPs below:
        # Require ip 198.51.100.0/24
    </RequireAll>
</Directory>

203.0.113.50 替换为您实际的受信任 IP 地址或子网。保存文件并重启 Apache:

sudo systemctl restart apache2

> 注意:如果您的 IP 地址经常变化,请考虑使用具有静态 IP 的 VPN,或仅依靠 HTTP 基本身份验证与 SSL 相结合。

第 6 步 — 启用 SSL 加密流量

通过纯 HTTP 发送数据库凭证是一个严重的安全风险。您应该始终通过 HTTPS 访问 phpMyAdmin。有两种主要方法:

选项 A — 使用 Let’s Encrypt SSL 证书(免费)

如果您有指向服务器的域名,请安装 Certbot:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com

Certbot 将自动配置 Apache 将 HTTP 重定向到 HTTPS,并安装免费的自动续期证书。

选项 B — 使用商业 SSL 证书

对于处理敏感数据的生产环境,商业颁发的 SSL 证书提供更强的信任信号和保修保护。您可以直接从 AlexHost SSL 证书获得受信任的 SSL 证书,选项范围从域名验证 (DV) 到扩展验证 (EV) 证书。

安装 SSL 证书后,确保您的 phpMyAdmin URL 使用 https://

https://yourdomain.com/phpmyadmin

第 7 步 — 访问 phpMyAdmin

安装和安全措施完成后,打开浏览器并导航到:

https://your_server_ip_or_domain/phpmyadmin

您将依次遇到两个身份验证提示:

  1. HTTP 基本身份验证提示 — 输入您使用 htpasswd 创建的用户名和密码
  2. phpMyAdmin 登录页面 — 输入您的 MySQL/MariaDB 用户名(例如 root)及其密码

成功登录后,您将通过 phpMyAdmin 图形界面完全访问您的 MySQL 数据库。

故障排除常见问题

phpMyAdmin 返回 404 Not Found 错误

Apache 配置可能未链接或未启用。运行:

sudo a2enconf phpmyadmin
sudo systemctl reload apache2

还要验证符号链接是否存在:

ls -la /etc/apache2/conf-available/phpmyadmin.conf

“无法连接到 MySQL 服务器”错误

检查 MySQL/MariaDB 是否正在运行:

sudo systemctl status mysql
# or for MariaDB:
sudo systemctl status mariadb

如果已停止,请启动它:

sudo systemctl start mysql

HTTP 500 内部服务器错误

这通常表示缺少 PHP 模块。安装所需的 PHP 扩展:

sudo apt install php-mbstring php-zip php-gd php-json php-curl -y
sudo systemctl restart apache2

登录后页面空白

清除浏览器缓存,或检查 Apache 错误日志以获取详细信息:

sudo tail -f /var/log/apache2/error.log

安全最佳实践总结

在上线之前,请查看此安全检查清单:

安全措施状态
HTTP 基本身份验证已启用
SSL/HTTPS 已配置
IP 限制已应用(如适用)
MySQL root 远程登录已禁用
phpMyAdmin URL 已从默认 /phpmyadmin 更改推荐
定期系统更新已计划
防火墙 (UFW) 已配置推荐

重命名 phpMyAdmin URL(额外加固步骤)

将默认 /phpmyadmin URL 路径更改为不易预测的内容可显著减少自动化机器人攻击。编辑 Apache 配置:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

将:

Alias /phpmyadmin /usr/share/phpmyadmin

更改为不太明显的内容:

Alias /db-manager-2024 /usr/share/phpmyadmin

重启 Apache 并相应更新您的书签。

结论

在 Ubuntu 上安装 phpMyAdmin 是一个简单的过程,但正确保护它是不可协商的。通过结合 HTTP 基本身份验证、基于 IP 的访问限制、SSL 加密和自定义 URL 别名,您可以创建多个重叠的防御层,保护您的数据库免受未授权访问和自动化攻击。

总结我们涵盖的内容:

  • ✅ 在 Ubuntu 20.04/22.04 上通过 APT 安装了 phpMyAdmin
  • ✅ 配置了 Apache 以正确提供 phpMyAdmin
  • ✅ 添加了 HTTP 基本身份验证作为第二道安全门
  • ✅ 按受信任的 IP 地址限制了访问
  • ✅ 启用了 SSL/HTTPS 以加密所有流量
  • ✅ 通过重命名默认 URL 应用了额外的加固

安全的 phpMyAdmin 设置只有在其运行的服务器一样强大。为了获得可靠、高性能的基础,请探索 AlexHost 独立服务器以获得完整的硬件控制,或 AlexHost 共享虚拟主机用于需要托管环境的轻量级项目。如果您需要一个控制面板来管理您的服务器以及 phpMyAdmin,请查看 AlexHost VPS with cPanel 以获得一体化管理体验。

保持您的系统更新,定期监控您的访问日志,并在升级 phpMyAdmin 或 Ubuntu 版本时重新审视您的安全配置。今天花费几分钟进行主动加固可以防止明天的灾难性数据泄露。

专用服务器 管理 虚拟服务器
域名 管理
Linux 窗口

所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
快速获取信息
快速获取信息

节省您的时间,快速解答您的问题

自己解决问题
自己解决问题

知识库包含详细的教程,让您可以自己处理技术任务。

提高技能
提高技能

通过使用知识库,您可以扩展有关虚拟主机和相关主题的知识

插图和图表
插图和图表

许多文章都配有插图和图表,使复杂的过程和设置更容易理解。

实用技巧
实用技巧

你会找到有用的技巧和窍门,以提升你的网站或网络应用的性能。

给定主题的相关性
给定主题的相关性

知识库中的信息会定期更新,以反映 IT 基础设施和 AlexHost 服务领域的最新变化和趋势。

没有找到您要找的主题?有一个完美的解决方案

杰出的客人和客户!您的便利是我们的首要任务!如果您在安装任何特定软件或部署服务器时遇到困难,请随时联系我们。我们重视您的意见,并随时准备帮助您解决问题。

此外,我们还为您提供了积极参与创建知识库的机会。如果您有希望纳入我们数据库的主题或问题,请告诉我们!我们随时准备根据您的需求撰写详细的文章和指南。

我们努力使您在 AlexHost 的体验尽可能方便和高效,您对知识库的贡献有助于我们实现这一目标。联系我们 ->
info@alexhost.com 并让我们知道如何让您的住宿体验更加完美。

Solution Image