使用Ubuntu 20.04 LTS上使用 LAMP 堆栈安装phpmyadmin

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

PHPMyAdmin是一种以PHP编程语言编写的自由和开源的基于Web的数据库管理工具。
使用PHPMyAdmin,数据库管理员可以通过Web浏览器轻松管理单个和/或者多个数据库服务器。
这对那些对MySQL提示不舒服的人有用。
PHPMyAdmin允许数据库管理员执行各种数据库管理任务,例如创建,编辑,重命名,删除数据库,导入和导出数据库,创建表,字段和字段,执行SQL命令和许多。
在本教程中,我们将在Ubuntu 20.04 LTS服务器操作系统上使用 LAMP 堆栈安装PHPMyAdmin。

使用Ubuntu 20.04 LTS上使用 LAMP 堆栈安装phpmyadmin

要在Ubuntu 20.04 LTS服务器上安装PHPMyAdmin,我们应该有一个工作灯堆栈。
如果尚未安装 LAMP 堆栈,请参阅以下教程:

  • 在Ubuntu 20.04 LTS上安装Apache,MySQL,PHP(LAMP)堆栈

设置 LAMP 堆栈后,如果未启用,请启用"Universe"存储库。

$sudo add-apt-repository universe
$sudo apt update

现在使用命令安装phpmyadmin和Ubuntu 20.04上的所有其他所需依赖项:

$sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

接下来,选择应自动配置为运行PHPMyAdmin的Web服务器。
使用向上/向下箭头选择Web服务器,然后点击空格键键。
选择Web服务器后,我们将看到它面前的*(星)符号。
点击Tab键以选择确定,然后再次按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.

出现此错误的原因是,我们已启用上面的 LAMP 堆栈安装教程中标题为"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 php-mbstring php-zip php-gd php-json php-curl

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

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

$mysql -u root -p

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

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

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

mysql> exit

最后,启用MBString PHP扩展并重新启动Apache服务以更新如下所示的更改。

$sudo phpenmod mbstring
$sudo systemctl restart apache2

我们现在可以通过加载Web浏览器的Info.php文件来验证是否启用了MBString扩展名。

为此,请从浏览器中导航到http://ip-address/info.php。

我们将看到启用MBString插件。

创建专用用户来访问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仪表板。

访问phpmyadmin仪表板

打开Web浏览器并导航到http://ip-address/phpmyadmin或者http://domain/phpmyadmin。
我们应该看到phpmyadmin登录页面。
使用MySQL root用户或者我们在上一步中创建的新用户登录PhmyAdmin接口。

这是phpmyadmin仪表板的样子:

从现在开始,我们可以通过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;
[...]

保存并关闭文件。

使用命令重新启动Apache Web服务器:

$sudo systemctl restart apache2

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

密码保护PHPMYADMIN登录页面

由于PHPMyAdmin是攻击者的一个简单目标,因此下一个推荐的任务是保护PHPYMYADMIN Web登录页面。
保护PHPMyAdmin免受未经授权访问的最常用方法是通过使用Apache的内置.htaccess身份验证和授权功能。

首先,通过编辑/phpmyadmin.conf文件,使得.htaccess文件覆盖。

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

如下所示,在<directory/usr/sharp/phpmyadmin>部分中添加"allowoverride所有"行。

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

按CTL + X,然后按Y以保存并关闭文件。

重新启动Apache服务以更新使用命令的更改:

$sudo systemctl restart apache2

接下来,使用命令在/usr/share/phpmyadmin /目录中创建名为.htaccess的文件:

$sudo nano /usr/share/phpmyadmin/.htaccess

添加以下行:

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

保存并关闭文件。

现在,运行以下命令以创建新用户,例如onIrad:

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

用我们选择的任何用户替换'theitroad'。
我们将要求我们为新用户提供密码。
输入两次。

示例输出:

New password: 
Re-type new password: 
Adding password for user theitroad

我们现在添加了另外的安全层来访问PHPMyAdmin Web界面。
从现在开始,每当我们尝试访问PHPMyAdmin Web界面时,系统会提示我们输入我们在上一步中配置的其他用户名及其密码。

输入正确的用户名和密码后,将重定向到实际的PHPMyAdmin身份验证登录页面。
只需输入数据库凭据即可访问PHPMyAdmin仪表板。