如何在 Ubuntu 18.04 上安装和保护 phpMyAdmin如何在 Ubuntu 18.04 上安装和保护 phpMyAdmin如何在 Ubuntu 18.04 上安装和保护 phpMyAdmin如何在 Ubuntu 18.04 上安装和保护 phpMyAdmin
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 18.04 上安装和保护 phpMyAdmin

介绍

虽然许多用户需要像 MySQL 这样的数据库管理系统的功能,但他们可能不习惯仅从 MySQL 命令行客户端与系统交互。

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

先决条件

要完成本教程,您需要具备以下条件:

  • 一台运行 Ubuntu 18.04 的服务器。此服务器应具有具有 sudo 权限的非根管理用户,以及配置有 UFW 的防火墙。要进行设置,请按照我们的 Ubuntu 18.04 初始服务器设置指南进行操作。
  • 在您的服务器上安装了一个 LAMP 堆栈。您可以按照本指南在 Ubuntu 18.04 上安装 LAMP 堆栈进行设置。

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

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

由于这些原因,并且因为它是一个广泛部署的 PHP 应用程序,经常成为攻击的目标,所以您永远不应该通过普通 HTTP 连接在远程系统上运行 phpMyAdmin。如果您没有使用 SSL/TLS 证书配置的现有域,则可以按照本指南设置 Apache 虚拟主机。

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

第 1 步 — 安装 phpMyAdmin

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

首先,更新服务器的包索引:

  1. sudo apt update

然后使用 apt 下载文件并将它们安装到您的系统上:

  1. sudo apt install phpmyadmin php-mbstring php-gettext

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

警告:出现提示时,\apache2 突出显示,但未选中。要选择 Apache,请按 SPACE、TAB,然后按 ENTER .

如果您没有按 SPACE 键选择 Apache,安装程序将不会在安装过程中移动必要的文件。

  • 对于服务器选择,选择apache2
  • 当询问是否使用 dbconfig-common 设置数据库时,选择 Yes
  • 然后系统会要求您选择并确认 phpMyAdmin 的 MySQL 应用程序密码

安装过程将 phpMyAdmin Apache 配置文件添加到 /etc/apache2/conf-enabled/ 目录中,它会自动读取。您唯一需要做的就是显式启用 mbstring PHP 扩展,您可以通过键入以下内容来实现:

  1. sudo phpenmod mbstring

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

  1. sudo systemctl restart apache2

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

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

当您将 phpMyAdmin 安装到您的服务器上时,它会自动创建一个名为 phpmyadmin 的数据库用户,该用户为该程序执行某些基础进程。建议您以根 MySQL 用户或专用于通过 phpMyAdmin 界面管理数据库的用户身份登录,而不是使用您在安装期间设置的管理密码作为该用户登录。

为 MySQL 根帐户配置密码访问

在运行 MySQL 5.7(及更高版本)的 Ubuntu 系统中,MySQL 根用户默认设置为使用 auth_socket 插件进行身份验证,而不是使用密码。在许多情况下,这可以提高安全性和可用性,但是当您需要允许外部程序(如 phpMyAdmin)访问用户时,它也会使事情复杂化。

为了以您的 MySQL 根用户身份登录 phpMyAdmin,您需要将其身份验证方法从 auth_socket 切换为 mysql_native_password(如果您尚未这样做)。为此,请从您的终端打开 MySQL 提示符:

  1. sudo mysql

接下来,使用以下命令检查每个 MySQL 用户帐户使用的身份验证方法:

  1. SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost | | phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

在此示例中,root 用户实际上使用 auth_socket 插件进行身份验证。要将根帐户配置为使用密码进行身份验证,请运行以下 ALTER USER 命令。请务必将 password 更改为您选择的强密码:

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

然后,运行 FLUSH PRIVILEGES 告诉服务器重新加载授权表并使您的新更改生效:

  1. FLUSH PRIVILEGES;

再次检查每个用户使用的身份验证方法,以确认 root 不再使用 auth_socket 插件进行身份验证:

  1. SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost | | phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

此输出表明 root 用户将使用密码进行身份验证。您现在可以使用您在此处设置的密码以 root 用户身份登录 phpMyAdmin 界面。

为专用 MySQL 用户配置密码访问

或者,有些人可能会发现使用专用用户连接到 phpMyAdmin 更适合他们的工作流程。为此,再次打开 MySQL shell:

  1. sudo mysql

注意:如果您启用了密码身份验证,如上一节所述,您将需要使用不同的命令来访问 MySQL shell。以下命令将以普通用户权限运行您的 MySQL 客户端,您将只能通过身份验证获得数据库内的管理员权限:

  1. mysql -u root -p

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

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

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

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

之后,退出 MySQL shell:

  1. exit

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

http://your_domain_or_IP/phpmyadmin

以 root 身份或使用您刚刚配置的新用户名和密码登录界面。

当您登录时,您将被带到 phpMyAdmin 用户界面:

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

第 3 步 — 保护您的 phpMyAdmin 实例

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

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

使用您最喜欢的文本编辑器编辑已放置在 Apache 配置目录中的链接文件。此示例使用 nano:

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

在配置文件的 部分添加一个 AllowOverride All 指令,如下所示:

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

添加此行后,保存并关闭文件。如果您使用 nano 编辑文件,请按 CTRL + X、Y,然后按 ENTER .

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

  1. sudo systemctl restart apache2

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

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

  1. 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:指定只有经过身份验证的用户才能访问此资源。这实际上阻止了未经授权的用户进入。

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

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

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

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

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

  1. sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

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

https://domain_name_or_IP/phpmyadmin

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

结论

您现在应该已经配置好 phpMyAdmin 并可以在您的 Ubuntu 18.04 服务器上使用了。使用此接口,您可以轻松地创建数据库、用户、表等,并执行删除和修改结构和数据等常用操作。

©2015-2025 艾丽卡 support@alaica.com