在本文中我们将介绍如何安装和保护phpMyAdmin,以便您可以安全地使用它来管理Ubuntu 18.04系统上的数据库。 虽然许多用户需要像MySQL这样的数据库管理系统的功能,但他们可能不愿意仅仅从MySQL提示符与系统进行交互。创建了phpMyAdmin,以便用户可以通过Web界面与MySQL进行交互。
先决条件 在开始使用本指南之前,您需要完成一些基本步骤。 首先,我们假设您的服务器拥有一个拥有特权的非root用户sudo,并且配置了防火墙ufw. 我们还会假设您已经在Ubuntu 18.04服务器上安装了LAMP(Linux,Apache,MySQL和PHP)安装。 最后,使用像phpMyAdmin这样的软件时有一些重要的安全考虑,因为它: 1.直接与您的MySQL安装进行通信 2.使用MySQL凭证处理认证 3.执行并返回任意SQL查询的结果 出于这些原因,并且由于它是一个广泛部署的PHP应用程序,它经常针对攻击目标,因此您绝不应该在远程系统上通过纯HTTP连接运行phpMyAdmin。 完成这些步骤后,即可开始使用本指南。
第1步、安装phpMyAdmin 要开始,我们将从默认的Ubuntu存储库安装phpMyAdmin。 这是通过更新服务器的软件包索引,然后使用apt打包系统来下载文件并将它们安装到系统上来完成的: sudo apt update sudo apt install phpmyadmin php-mbstring php-gettext 这会问你几个问题,以便正确配置你的安装。 警告:出现提示时,“Apache2的”被选中,但没有选中。如果您没有SPACE选择Apache,则安装过程中安装程序不会移动必要的文件。点击SPACE,TAB然后ENTER选择Apache。 对于服务器选择,请选择 apache2 选择Yes当被问及是否使用dbconfig-common建立数据库 然后您将被要求选择并确认phpMyAdmin的MySQL应用程序密码 安装过程将phpMyAdmin Apache配置文件添加到/etc/apache2/conf-enabled/目录中,并在其中自动读取。您需要做的唯一事情就是明确地启用mbstringPHP扩展,您可以通过输入以下命令来完成该扩展: sudo phpenmod mbstring 之后,重新启动Apache以使您的更改得到识别: sudo systemctl restart apache2 现在已安装并配置phpMyAdmin。但是,在您登录并开始与MySQL数据库交互之前,您需要确保您的MySQL用户具有与该程序进行交互所需的权限。
第2步、调整用户身份验证和权限 当您将phpMyAdmin安装到您的服务器上时,它会自动创建一个数据库用户phpmyadmin,该用户为该程序执行某些基础进程。不是以安装期间设置的管理密码作为此用户登录,建议您以root用户的MySQL用户身份或专门用于通过phpMyAdmin界面管理数据库的用户身份登录。 为MySQL根帐户配置密码访问 在运行MySQL 5.7(及更高版本)的Ubuntu系统中,根MySQL用户auth_socket默认使用插件进行身份验证,而不是使用密码进行身份验证。这在许多情况下允许更高的安全性和可用性,但是当您需要允许外部程序(如phpMyAdmin)访问用户时,这也会使事情变得复杂。 为了以root用户身份登录到phpMyAdmin auth_socket,mysql_native_password如果您尚未这样做,您需要将其身份验证方法从。为此,请从终端打开MySQL提示符: sudo mysql 接下来,使用以下命令检查每个MySQL用户帐户使用的身份验证方法: SELECT user,authentication_string,plugin,host FROM mysql.user;
在这个例子中,你可以看到root用户确实使用auth_socket插件进行了身份验证。要配置root帐户以使用密码进行身份验证,请运行以下ALTER USER命令。请务必更改password为您选择的强密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 然后,运行FLUSH PRIVILEGES它告诉服务器重新加载授权表并使新的更改生效: FLUSH PRIVILEGES; 再次检查每个用户使用的身份验证方法,以确认root不再使用该auth_socket插件进行身份验证: SELECT user,authentication_string,plugin,host FROM mysql.user;
您可以从此输出中看到root用户将使用密码进行身份验证。您现在可以使用您在此设置的密码以root用户身份登录到phpMyAdmin界面。 为专用MySQL用户配置密码访问 另外,有些人可能会发现,它更适合他们的工作流程,以专用用户连接到phpMyAdmin。要做到这一点,再次打开MySQL shell: sudo mysql 注意:如果您启用了密码认证,如前一节所述,您将需要使用其他命令来访问MySQL shell。以下将以常规用户权限运行您的MySQL客户端,并且您将只通过身份验证获得数据库中的管理员权限: mysql -u root -p 从那里,创建一个新用户并给它一个强大的密码: CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password'; 然后,授予您的新用户适当的权限。例如,您可以授予用户数据库中所有表的权限,以及使用以下命令添加,更改和删除用户权限的权限: GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION; 之后,退出MySQL shell: exit 您现在可以访问您的服务器的域名或公共IP地址,然后访问Web界面/phpmyadmin: https://your_domain_or_IP/phpmyadmin
以root身份或使用刚配置的新用户名和密码登录界面。 当你登录时,你会看到用户界面,它看起来像这样:
既然您可以连接并与phpMyAdmin进行交互,那么您所要做的就是强化您的系统安全性,以防止攻击者进入。
第3步、保护您的phpMyAdmin实例 由于其无处不在,phpMyAdmin是攻击者的流行目标,您应该格外小心,以防止未经授权的访问。这样做的最简单方法之一是使用Apache的内置.htaccess身份验证和授权功能将网关置于整个应用程序的前端。 为此,您必须首先.htaccess通过编辑Apache配置文件来启用文件覆盖。 编辑已放置在Apache配置目录中的链接文件: sudo nano /etc/apache2/conf-available/phpmyadmin.conf 在配置文件AllowOverride All的<Directory /usr/share/phpmyadmin>部分中添加一个指令,如下所示: /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 以下是每条线的含义: 1.AuthType Basic:该行指定您正在实施的认证类型。这种类型将使用密码文件实现密码认证。 2.AuthName:这设置了认证对话框的消息。您应该保留这种通用名称,以便未经授权的用户不会获得有关受保护内容的任何信息。 3.AuthUserFile:这设置将用于认证的密码文件的位置。这应该在正在服务的目录之外。我们很快就会创建这个文件。 4.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身份验证页面输入您的MySQL凭证。这个设置增加了一个额外的安全层,这是因为phpMyAdmin过去曾经遭受漏洞攻击。
结论 您现在应该已经配置phpMyAdmin并准备在您的Ubuntu 18.04服务器上使用。使用这个接口,您可以轻松创建数据库,用户,表等,并执行通常的操作,如删除和修改结构和数据。
相关主题 |