在Ubuntu 20.04 LTS上使用LEMP堆栈安装phpmyadmin

时间:2020-03-21 11:45:44  来源:igfitidea点击:

我们已经知道如何使用ubuntu 20.04上使用 LAMP 堆栈安装phpmyadmin。

今天,让我们了解如何在Ubuntu 20.04 LTS版本上使用LEMP堆栈安装PHPMyAdmin。
然后我们还将讨论一些安全实践,有助于保护PHPMyAdmin免于共同的威胁。
首先,请确保在Ubuntu 20.04上安装了LEMP堆栈

安装LEMP堆栈后,如下一节所述安装和安全PHPMyAdmin。

在Ubuntu 20.04 LTS上使用LEMP堆栈安装phpmyadmin

运行以下命令以从终端安装phpmyadmin:

$sudo apt install phpmyadmin

在下一个窗口中,系统将提示我们选择应自动配置为运行PHPMyAdmin的Web服务器。
正如我们在下面的屏幕截图中看到,NGINX在Web服务器列表中不可用。
Apache和Lighttpd只在这里列出。
所以不要选择任何Web服务器,只需将其留空"。
选择确定并按ENTER继续:

PHPMyAdmin需要在使用之前安装和配置的数据库。
我们可以使用dbconfig-命令执行此操作。

使用dbconfig-common为phpmyadmin配置为"是"

我们需要为PHPMyAdmin提供密码以注册MySQL数据库服务器。
如果未给出密码,将生成随机密码。

输入强密码并按ENTER继续:

重新输入密码:

首先写入本教程,当我尝试设置phpmyadmin的密码时,它会抛出以下错误:

An error occurred while installing the database:
mysql said: ERROR 1819 (HY000) at line 1: Your password does not satisfy
 the current policy requirements . Your options are:                                  
* abort - Causes the operation to fail; you will need to downgrade,             
reinstall, reconfigure this package, or otherwise manually intervene          
to continue using it. This will usually also impact your ability to           
install other packages until the installation failure is resolved.            
* retry - Prompts once more with all the configuration questions                
(including ones you Jan have missed due to the debconf priority               
setting) and makes another attempt at performing the operation.               
* retry (skip questions) - Immediately attempts the operation again,            
skipping all questions. This is normally useful only if you have 
solved the underlying problem since the time the error occurred.              
* ignore - Continues the operation ignoring dbconfig-common errors.             
This will usually leave this package without a functional database.

出现此错误的原因是,我们已启用如上面的LEMP堆栈安装教程中标题为"2.2更改MySQL root用户"的"2.2更改身份验证方法"一节所述的验证密码组件。

要修复此问题,我们需要暂时禁用验证密码组件并在设置PhymyAdmin的密码后重新启用它。
单击"确定"关闭上述错误消息,然后选择"中止"以取消PHPMyAdmin安装。

现在通过运行以下命令登录MySQL提示符:

$mysql -u root -p

从mysql提示符,tun the以下命令禁用验证密码插件:

mysql> UNINSTALL COMPONENT "file://component_validate_password";

请注意,上面的命令只会禁用插件,但不要删除它。
我们可以稍后启用它。
然后键入"退出"退出MySQL提示符。

mysql> exit

现在尝试使用命令再次安装phpmyadmin:

$sudo apt install phpmyadmin

选择"是"并按Enter键配置数据库,用于使用DBConfig-Common进行PHPMyAdmin。
这次PHPMyAdmin安装将在没有任何问题的情况下工作。

安装PHPMyAdmin后,重新启用验证密码插件。
为此,请登录MySQL提示符:

$mysql -u root -p

从mysql提示符,tun the以下命令禁用验证密码插件:

mysql> INSTALL COMPONENT "file://component_validate_password";

键入退出以退出MySQL提示符。

mysql> exit

现在创建一个符号链接以配置nginx web服务器使用命令运行phpmyadmin:

$sudo ln -s /usr/share/phpmyadmin//var/www/html/phpmyadmin

此命令将在nginx根目录下创建名为"phpmyadmin"的符号链接。
此符号链接实际上指向/usr/share/phpmyadmin目录,其中存储实际文件。

完毕!我们已使用LEMP堆栈成功安装PHPMYADMIN。

访问phpmyadmin仪表板

打开Web浏览器并从地址列中导航到"http://ip-address/phpmyadmin"。

我们应该看到phpmyadmin登录页面。
输入数据库用户及其密码:

我们将对PhpMyadmin仪表板感到满意。

从其中我们可以创建,删除和管理数据库。

创建专用用户来访问PHPMyAdmin仪表板

安装PHPMyAdmin后,将在安装期间设置的管理密码自动创建一个名为"phpmyadmin"的数据库用户。
我们可以使用"PHPMYADMIN"用户或者MySQL root用户身份登录PHPMyAdmin仪表板,如上所示。
但是,建议创建专用用户通过PHPMyAdmin Web界面管理数据库。

为此,请使用命令登录MySQL shell:

$mysql -u root -p

输入MySQL root密码。
我们现在将在mysql shell中。

输入以下命令以为phpmyadmin创建新的专用用户:

mysql> CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'Password123#@!';

其中phpmyadmin是用于访问PHPMyAdmin仪表板的新用户。
phpmyadminuser的密码是password123#@!。
用自己替换这些值。

接下来使用命令为"phpmyadminuser"提供适当的权限:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;

最后退出mysql shell:

mysql> exit

我们现在创建了一个专用用户来通过PHPMyAdmin Web界面管理数据库。
让我们继续前进并访问phpmyadmin仪表板。

打开Web浏览器并导航到"http://ip-address/phpayadmin。
输入新创建的数据库用户及其密码。
恭喜!我们已使用专用用户登录到PHPMyAdmin Web仪表板。

安全phpmyadmin

本节提供了一些可以保护PHPMYADMIN安装的提示。
请注意,以下步骤无法保护PHPMyAdmin 100%安全。
但是,它们至少会减少犯罪者的任何尝试,以闯入PHPMYADMIN仪表板。

禁用MySQL Root登录PHPMYADMIN仪表板

允许MySQL root用户访问PHPMyAdmin仪表板不安全,尤其是在管理数据库时进行网络。
这就是为什么我们在上一节中创建了专用用户。
由于我们已经拥有专用的用户,我们可以安全地禁用MySQL root登录以访问PHPMyAdmin仪表板以最大限度地减少攻击。

通常,PHPMyAdmin安装在/usr/share/phpmyadmin /目录下,其配置文件存储在/etc/phpmyadmin目录中。

编辑phpmyadmin配置文件:

$sudo nano /etc/phpmyadmin/config.inc.php

添加/修改以下参数:

[...]
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowRoot'] = FALSE;
[...]

保存并关闭文件。

使用命令重新启动nginx web服务器:

$sudo systemctl restart nginx

现在尝试以root用户身份登录phpmyadmin。
我们将获得访问拒绝错误消息:

更改phpmyadmin Web界面URL

这是最常见的策略,然后是机器人访问phpmyadmin。
我们可以通过将URL更改为难以猜测来防止这一点。
更改PHPMyAdmin URL将避免机器人或者自动脚本来执行URL扫描和蛮力攻击。

请记住,我们在nginx根目录下创建了一个名为"phpmyadmin"的符号链接?

$ls -l /var/www/html/
total 8
-rw-r--r-- 1 root root 612 Jun  2 07:15 index.nginx-debian.html
-rw-r--r-- 1 root root  20 Jun  2 07:35 info.php
lrwxrwxrwx 1 root root  22 Jun  2 08:14 phpmyadmin -> /usr/share/phpmyadmin/

其中phpmyadmin是指向/usr/share/phpmyadmin目录的符号链接。

我们将使用命令更改Symlink名称:

$sudo mv /var/www/html/phpmyadmin /var/www/html/theitroad

确保名称包含随机字符,很难猜测。

从现在开始,每当有人尝试通过导航到http://ip-address/phpmyadmin url来访问phpmyadmin页面时,s /他将收到以下错误消息:

因为我们改变了URL。
phpmyadmin的新URL是http://ip-address/onatroad。

密码保护PHPMYADMIN登录页面

我们可以通过使用基本的HTTP身份验证方法限制对PHPMyAdmin登录页面的访问来添加另外的安全性。
含义我们为PHPMYADMIN登录页面启用密码保护,因此用户必须在访问实际PHPMYADMIN登录页面之前输入其他用户名/密码。

首先,我们需要使用htpasswd实用程序生成密码文件。
HTPasswd实用程序是Apache2-Utils包的一部分。
因此,让我们使用命令安装它:

$sudo apt install apache2-utils

现在,使用命令创建加密密码文件:

$sudo htpasswd -c /etc/nginx/.htpasswd theitroad

用我们选择的用户名替换"theitroad"。
输入两次强密码以生成密码文件。

要查看新生成的文件的内容,请执行以下内容"cat"命令:

$cat /etc/nginx/.htpasswd

我们将看到如下所示的输出:

theitroad:$apr1$Us9YABHL$CMPDIuHaOB2lK/DVIzA2C/

接下来,我们需要在我们的nginx默认配置文件中提及上面密码文件的路径。
如果我们遵循上面的LEMP安装教程,则默认的nginx配置应为/etc/nginx/sites可用/默认值。

编辑默认nginx配置文件:

$sudo nano /etc/nginx/sites-available/default

在"位置"块下添加以下行:

[...]
location /theitroad {
                auth_basic "Restricted Zone";
                auth_basic_user_file /etc/nginx/.htpasswd;
        }
[...]

请记住,我们在上一步中更改了PHPMYADMIN URL(http://ip-address/onatrad)?
这就是为什么我在上面的块中提到了块名称为"onitad"。
用你自己替换它。
保存并关闭文件。

检查nginx配置文件是否有使用命令的任何语法错误:

$sudo nginx -t

示例输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果我们没有看到任何错误,请重新启动nginx服务以生效更改。

$sudo systemctl restart nginx

现在尝试从浏览器中访问PHPMyAdmin URL。
系统将提示我们输入用户名和密码:

输入将使用"htpasword"实用程序之前创建的正确用户名和密码。
现在,我们将被重定向到实际的phpmyadmin登录页面,我们可以其中输入数据库用户及其密码以登录PHPMyAdmin Web仪表板。