简介
虽然许多用户需要像 MySQL 这样的数据库管理系统的功能,但他们可能不太习惯仅通过 MySQL 提示符与系统进行交互。
phpMyAdmin 的出现使用户可以通过 Web 界面与 MySQL 进行交互。在本指南中,我们将讨论如何安装和保护 phpMyAdmin,以便您可以安全地在 Ubuntu 16.04 系统上使用它来管理数据库。
先决条件
在开始本指南之前,您需要完成一些基本步骤。
首先,我们假设您正在使用具有 sudo 特权的非根用户,就像在 Ubuntu 16.04 的初始服务器设置的步骤 1-4 中描述的那样。
我们还假设您已在 Ubuntu 16.04 服务器上完成了 LAMP(Linux、Apache、MySQL 和 PHP)安装。如果尚未完成此步骤,您可以按照本指南在 Ubuntu 16.04 上安装 LAMP 栈。
最后,在使用诸如 phpMyAdmin 这样的软件时,有一些重要的安全考虑,因为它:
- 直接与您的 MySQL 安装进行通信
- 使用 MySQL 凭据进行身份验证
- 执行并返回任意 SQL 查询的结果
因此,由于它是一个广泛部署的 PHP 应用程序,经常成为攻击目标,您不应该在普通 HTTP 连接上在远程系统上运行 phpMyAdmin。如果您没有配置具有 SSL/TLS 证书的现有域,您可以按照本指南在 Ubuntu 16.04 上使用 Let’s Encrypt 保护 Apache。
完成这些步骤后,您就可以开始本指南了。
步骤一 — 安装 phpMyAdmin
要开始,我们将从默认的 Ubuntu 软件仓库安装 phpMyAdmin。
我们可以通过更新本地软件包索引,然后使用 apt
软件包系统从仓库中拉取文件并在系统上安装它们来完成这一步:
sudo apt-get update sudo apt-get install phpmyadmin php-mbstring php-gettext
这将要求您回答一些问题,以便正确配置安装。
- 对于服务器选择,选择 apache2。
- 当询问是否使用
dbconfig-common
来设置数据库时选择 yes - 然后会提示您输入数据库管理员的密码
- 然后会要求您选择并确认
phpMyAdmin
应用程序本身的密码
安装过程实际上将 phpMyAdmin Apache 配置文件添加到 /etc/apache2/conf-enabled/
目录中,这样它就会被自动读取。
我们唯一需要做的是显式启用 PHP mcrypt
和 mbstring
扩展,可以通过输入以下命令来完成:
sudo phpenmod mcrypt sudo phpenmod mbstring
之后,您需要重新启动 Apache 以使更改生效:
sudo systemctl restart apache2
现在,您可以通过访问服务器的域名或公共 IP 地址后跟 /phpmyadmin
来访问 Web 界面:
https://domain_name_or_IP/phpmyadmin
!phpMyAdmin 登录界面
您现在可以使用 root
用户名和在 MySQL 安装过程中设置的管理密码登录到界面。
登录后,您将看到用户界面,类似于这样:
!phpMyAdmin 用户界面
步骤二 — 安全地配置 phpMyAdmin 实例
我们已经相当轻松地让 phpMyAdmin 界面运行起来了。但我们还没有完成。由于其普及性,phpMyAdmin 是攻击者的热门目标。我们应该采取额外措施来防止未经授权的访问。
其中一种最简单的方法是在整个应用程序前面放置一个网关。我们可以使用 Apache 内置的 .htaccess
身份验证和授权功能来实现这一点。
配置 Apache 允许 .htaccess 覆盖
首先,我们需要编辑我们的 Apache 配置文件,以启用 .htaccess
文件覆盖。
我们将编辑已放置在 Apache 配置目录中的链接文件:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
我们需要在配置文件的 <Directory /usr/share/phpmyadmin>
部分中添加一个 AllowOverride All
指令,如下所示:
<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All . . .
添加了这一行后,保存并关闭文件。
要实施您所做的更改,重新启动 Apache:
sudo systemctl restart apache2
创建 .htaccess 文件
现在我们已经启用了应用程序的 .htaccess
使用,我们需要创建一个文件来实际实施一些安全性。
为了使此操作成功,必须在应用程序目录中创建该文件。我们可以通过输入以下命令来创建必要的文件并以 root 权限打开它:
sudo nano /usr/share/phpmyadmin/.htaccess
在此文件中,我们需要输入以下信息:
AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
让我们来看看每一行的含义:
AuthType Basic
:此行指定我们正在实施的身份验证类型。此类型将使用密码文件实施密码身份验证。AuthName
:这为身份验证对话框设置消息。您应该保持这个通用,以便未经授权的用户不会获得有关受保护内容的任何信息。AuthUserFile
:这设置了用于身份验证的密码文件的位置。这应该在正在提供服务的目录之外。我们将很快创建此文件。Require valid-user
:这指定只有经过身份验证的用户才能访问此资源。这实际上阻止了未经授权的用户进入。
完成后,保存并关闭文件。
创建用于身份验证的 .htpasswd 文件
我们选择的密码文件位置是 “/etc/phpmyadmin/.htpasswd
”。现在,我们可以使用 htpasswd
实用程序创建此文件并为其传递初始用户:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd 用户名
系统会提示您选择并确认要为所创建的用户设置的密码。之后,文件将以您输入的哈希密码创建。
如果您想输入其他用户,您需要不使用 -c
标志,就像这样:
sudo htpasswd /etc/phpmyadmin/.htpasswd 其他用户
现在,当您访问您的 phpMyAdmin 子目录时,系统将提示您输入刚刚配置的其他帐户名和密码:
https://域名或IP/phpmyadmin
!phpMyAdmin apache 密码
输入 Apache 身份验证后,您将被带到常规的 phpMyAdmin 身份验证页面,以输入其他凭据。这将增加额外的安全层,因为 phpMyAdmin 在过去曾遭受过漏洞的影响。
结论
您现在应该已经在您的 Ubuntu 16.04 服务器上配置好并准备使用 phpMyAdmin。使用此界面,您可以轻松创建数据库、用户、表等,并执行删除和修改结构和数据等常规操作。