如何在Debian9上安装和保护phpMyAdmin

来自菜鸟教程
跳转至:导航、​搜索

介绍

虽然许多用户需要像 MariaDB 这样的数据库管理系统的功能,但他们可能不习惯仅通过 MariaDB 提示符与系统交互。

phpMyAdmin 的创建是为了让用户可以通过 Web 界面与 MariaDB 进行交互。 在本指南中,我们将讨论如何安装和保护 phpMyAdmin,以便您可以安全地使用它来管理 Debian 9 系统上的数据库。

先决条件

在开始使用本指南之前,您需要完成一些基本步骤。

首先,我们假设您的服务器有一个具有 sudo 权限的非 root 用户,以及配置了 ufw 的防火墙,如 中所述]Debian 9 的初始服务器设置指南。

我们还将假设您已经在 Debian 9 服务器上完成了 LAMP(Linux、Apache、MariaDB 和 PHP)安装。 如果您还没有这样做,请按照我们关于 在 Debian 9 上安装 LAMP 堆栈的指南进行设置。

最后,在使用像 phpMyAdmin 这样的软件时,还有一些重要的安全注意事项,因为它:

  • 直接与您的 MariaDB 安装进行通信
  • 使用 MariaDB 凭证处理身份验证
  • 执行并返回任意 SQL 查询的结果

由于这些原因,并且因为它是一个广泛部署的 PHP 应用程序,并且经常成为攻击的目标,所以您永远不应该通过普通的 HTTP 连接在远程系统上运行 phpMyAdmin。 如果您没有配置 SSL/TLS 证书的现有域,您可以按照 在 Debian 9 上使用 Let's Encrypt 保护 Apache 的指南进行操作。 这将需要您注册一个域名为您的服务器创建DNS记录,并且设置一个Apache虚拟主机

完成这些步骤后,您就可以开始使用本指南了。

第 1 步 — 安装 phpMyAdmin

首先,我们将从默认的 Debian 存储库安装 phpMyAdmin。

这是通过更新服务器的包索引,然后使用 apt 打包系统下载文件并将它们安装到您的系统上来完成的:

sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

这将询问您几个问题,以便正确配置您的安装。

'警告: 出现提示时,“apache2”高亮显示,但未选择'。 如果您没有点击 SPACE 选择 Apache,安装程序将在安装过程中 not 移动必要的文件。 点击 SPACETAB,然后点击 ENTER 选择 Apache。


  • 对于服务器选择,选择 apache2
  • 询问是否使用dbconfig-common建库时选择Yes
  • 然后将要求您选择并确认 phpMyAdmin 的 MySQL 应用程序密码

注: MariaDB 是社区开发的 MySQL 分支,虽然这两个程序密切相关,但并不完全可以互换。 虽然 phpMyAdmin 专为管理 MySQL 数据库而设计,并在各种对话框中引用 MySQL,但请放心,您的 MariaDB 安装将与 phpMyAdmin 一起正常工作。


安装过程将 phpMyAdmin Apache 配置文件添加到 /etc/apache2/conf-enabled/ 目录中,自动读取。 您唯一需要做的就是显式启用 mbstring PHP 扩展,该扩展用于管理非 ASCII 字符串并将字符串转换为不同的编码。 通过键入:

sudo phpenmod mbstring

之后,重新启动 Apache 以识别您的更改:

sudo systemctl restart apache2

phpMyAdmin 现在已安装和配置。 但是,在您可以登录并开始管理您的 MariaDB 数据库之前,您需要确保您的 MariaDB 用户具有与程序交互所需的权限。

第 2 步 — 调整用户身份验证和权限

当您将 phpMyAdmin 安装到您的服务器上时,它会自动创建一个名为 phpmyadmin 的数据库用户,该用户为程序执行某些底层进程。 建议您使用其他帐户登录,而不是使用您在安装期间设置的管理密码以该用户身份登录。

在 Debian 系统上的新安装中,root MariaDB 用户默认设置为使用 unix_socket 插件进行身份验证,而不是使用密码。 在许多情况下,这允许更高的安全性和可用性,但是当您需要通过该用户允许外部程序(例如,phpMyAdmin)管理权限时,它也会使事情复杂化。 由于服务器使用 root 帐户执行日志轮换和启动和停止服务器等任务,因此最好不要更改 root 帐户的身份验证详细信息。 由于 phpMyAdmin 要求用户使用密码进行身份验证,因此您需要创建一个新的 MariaDB 帐户才能访问该界面。

如果您按照 安装 LAMP 堆栈 的先决条件教程并按照步骤 2 中的说明创建了 MariaDB 用户帐户,您可以使用您在设置时创建的密码在该帐户下登录 phpMyAdmin访问此链接:

https://your_domain_or_IP/phpmyadmin

如果您还没有创建 MariaDB 用户,或者如果您已经创建了一个用户,但您想创建另一个用户只是为了通过 phpMyAdmin 管理数据库,请继续本节以了解如何设置一个。

首先打开 MariaDB shell:

sudo mariadb

注意: 如果您启用了密码验证,就像您已经为您的 MariaDB 服务器创建了一个新的用户帐户一样,您将需要使用不同的命令来访问 MariaDB shell。 以下将以常规用户权限运行您的 MariaDB 客户端,并且您只能通过身份验证获得数据库内的管理员权限:

mariadb -u user -p

从那里,创建一个新用户并给它一个强密码:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

然后,授予您的新用户适当的权限。 例如,您可以使用以下命令授予用户对数据库中所有表的权限,以及添加、更改和删除用户权限的权力:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

之后,退出 MariaDB shell:

exit

您现在可以通过访问您的服务器的域名或公共 IP 地址来访问 Web 界面,然后是 /phpmyadmin

https://your_domain_or_IP/phpmyadmin

使用您配置的用户名和密码登录界面。

登录后,您会看到用户界面,如下所示:

现在您可以连接并与 phpMyAdmin 交互,剩下要做的就是加强系统的安全性以保护它免受攻击者的侵害。

第 3 步 — 保护您的 phpMyAdmin 实例

由于其无处不在,phpMyAdmin 是攻击者的热门目标,您应格外小心以防止未经授权的访问。 最简单的方法之一是使用 Apache 内置的 .htaccess 身份验证和授权功能在整个应用程序前面放置一个网关。

为此,您必须首先通过编辑 Apache 配置文件启用 .htaccess 文件覆盖。

编辑已放置在 Apache 配置目录中的链接文件:

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

在配置文件的 <Directory /usr/share/phpmyadmin> 部分中添加 AllowOverride All 指令,如下所示:

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

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

添加此行后,保存并关闭文件。

要实施您所做的更改,请重新启动 Apache:

sudo systemctl restart apache2

现在您已经为您的应用程序启用了 .htaccess 使用,您需要创建一个来实际实现一些安全性。

为了成功,必须在应用程序目录中创建该文件。 您可以创建必要的文件并在您的文本编辑器中通过键入以下命令以 root 权限打开它:

sudo nano /usr/share/phpmyadmin/.htaccess

在此文件中,输入以下信息:

/usr/share/phpmyadmin/.htaccess

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

以下是每一行的含义:

  • AuthType Basic:此行指定您正在实施的身份验证类型。 此类型将使用密码文件实现密码验证。
  • AuthName:设置验证对话框的消息。 您应该保持此通用性,以便未经授权的用户不会获得有关受保护内容的任何信息。
  • AuthUserFile:设置将用于身份验证的密码文件的位置。 这应该在所服务的目录之外。 我们将很快创建此文件。
  • Require valid-user:这指定只有经过身份验证的用户才能访问此资源。 这实际上是阻止未经授权的用户进入的原因。

完成后,保存并关闭文件。

您为密码文件选择的位置是 /etc/phpmyadmin/.htpasswd。 您现在可以创建此文件并使用 htpasswd 实用程序将其传递给初始用户:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

系统将提示您选择并确认您正在创建的用户的密码。 之后,使用您输入的散列密码创建文件。

如果你想输入一个额外的用户,你需要这样做没有-c标志,像这样:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

现在,当您访问 phpMyAdmin 子目录时,系统将提示您输入刚刚配置的附加帐户名和密码:

https://domain_name_or_IP/phpmyadmin

输入 Apache 身份验证后,您将被带到常规的 phpMyAdmin 身份验证页面以输入您的 MariaDB 凭据。 此设置增加了额外的安全层,这是可取的,因为 phpMyAdmin 过去曾遭受过漏洞的困扰。

结论

您现在应该已配置好 phpMyAdmin 并准备好在您的 Debian 9 服务器上使用。 使用该界面,您可以轻松创建数据库、用户、表等,并执行删除和修改结构和数据等常用操作。