15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
01.11.2024

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

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

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

目录

  1. 前置条件
  2. 第 1 步 — 更新系统和软件包索引
  3. 第 2 步 — 安装 phpMyAdmin
  4. 第 3 步 — 为 phpMyAdmin 配置 Apache
  5. 第 4 步 — 使用 HTTP 基本身份验证保护 phpMyAdmin
  6. 第 5 步 — 按 IP 地址限制访问(可选但推荐)
  7. 第 6 步 — 启用 SSL 加密流量
  8. 第 7 步 — 访问 phpMyAdmin
  9. 常见问题故障排除
  10. 结论

前置条件 {#prerequisites}

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

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

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

第 1 步 — 更新系统和软件包索引 {#step-1}

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

sudo apt update && sudo apt upgrade -y

第 2 步 — 安装 phpMyAdmin {#step-2}

使用官方 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 {#step-3}

在某些 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 {#step-4}

默认情况下,任何知道您服务器 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 加密流量 {#step-6}

通过纯 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 {#step-7}

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

https://your_server_ip_or_domain/phpmyadmin

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

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

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

常见问题故障排除 {#troubleshooting}

phpMyAdmin 返回 404 未找到错误

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 配置:

15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用