在CentOS 8上安装并保护phpMyAdmin

在CentOS 8上安装并保护phpMyAdmin

phpMyAdmin是一个免费的开源工具,可通过基于Web的界面管理MySQL和MariaDB服务器。使用phpMyAdmin,您可以创建和管理数据库和用户,执行SQL语句,导入和导出数据以及执行数据库活动,例如phpMyAdmin是最流行和使用最广泛的管理工具之一,尤其是对于Web托管服务。创建,删除,表,列,索引,权限等等。

特色功能

  • 提供简单且用户友好的Web界面。
  • 从CSV和SQL导入数据。
  • 支持大多数MySQL功能,包括创建,复制,删除,重命名,删除和更改数据库,表,字段和索引。
  • 允许您将数据导出为各种格式,例如PDF,CSV,SQL,XML等。
  • 管理多个服务器。
  • 使用示例查询(QBE)创建复杂的查询。

在本教程中,我们将向您展示如何在CentOS 8服务器上安装和保护phpMyAdmin。

要求条件

  • 运行CentOS的服务器8。
  • 在服务器上配置了root密码。

安装LAMP服务器

首先,您需要将Apache,MariaDB,PHP和其他PHP库安装到服务器上。您可以使用以下命令安装所有这些库:

dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip

一旦安装了所有软件包,请启动Apache和MariaDB服务,并使用以下命令在系统重新引导后启动它们:

systemctl start httpd systemctl start mariadb systemctl enable httpd systemctl enable mariadb

完成后,您可以继续下一步。

配置MariaDB

默认情况下,MariaDB是不安全的,因此您首先需要对其进行安全保护。您可以通过运行mysql_secure_installation脚本来做到这一点:

mysql_secure_installation

回答所有问题,如下所示:

Set root password? [Y/n] Y
New password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

完成后,您将看到以下输出:

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

至此,您的MariaDB安装已安全。

安装phpMyAdmin

默认情况下,CentOS 8默认存储库中不提供phpMyAdmin,因此,您需要从其官方网站下载最新版本的phpMyAdmin,您可以使用以下命令下载它:

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip

下载后,使用以下命令解压缩下载的文件:

unzip phpMyAdmin-4.9.2-all-languages.zip

接下来,将提取的内容移动到/ usr / share目录,如下所示:

mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin

接下来,将目录更改为/ usr / share / phpmyadmin并将文件重命名为config.sample.inc.php:

cd /usr/share/phpmyadmin mv config.sample.inc.php config.inc.php

接下来,使用您喜欢的文本编辑器打开文件,如下所示:

nano config.inc.php

更改以下行:

$cfg['blowfish_secret'] = 'your-secret-password';

保存完成后关闭文件。然后使用以下命令导入create_tables.sql:

mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p

在提示导入表时,提供您的root密码。

接下来,为phpmyadmin创建一个tmp目录并给予适当的权限:

mkdir /usr/share/phpmyadmin/tmp chown -R apache:apache /usr/share/phpmyadmin chmod 777 /usr/share/phpmyadmin/tmp

为phpMyAdmin配置Apache

接下来,您将需要为phpMyAdmin创建一个Apache虚拟主机配置文件。您可以使用以下命令创建它:

nano /etc/httpd/conf.d/phpmyadmin.conf

添加以下行:

Alias /phpmyadmin /usr/share/phpmyadmin


   AddDefaultCharset UTF-8

   
     # Apache 2.4
      
      Require all granted
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   



   
     # Apache 2.4
     
       Require all granted
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   

保存完成后关闭文件。然后,使用以下命令重新启动Apache服务:

systemctl restart httpd

您可以使用以下命令检查Apache的状态:

systemctl status httpd

您应该看到以下输出:

? httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           ??php-fpm.conf
   Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago
     Docs: man:httpd.service(8)
 Main PID: 5636 (httpd)
   Status: "Started, listening on: port 80"
    Tasks: 213 (limit: 25044)
   Memory: 28.7M
   CGroup: /system.slice/httpd.service
           ??5636 /usr/sbin/httpd -DFOREGROUND
           ??5639 /usr/sbin/httpd -DFOREGROUND
           ??5640 /usr/sbin/httpd -DFOREGROUND
           ??5641 /usr/sbin/httpd -DFOREGROUND
           ??5642 /usr/sbin/httpd -DFOREGROUND

Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server.
Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server...
Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0>
Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80
Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.

配置SELinux和防火墙

默认情况下,CentOS 8中启用了SELinux。因此,您需要为phpMyAdmin配置SELinux才能正常工作。

首先,使用以下命令安装policycoreutils-python-utils软件包来管理SELinux环境:

dnf install policycoreutils-python-utils

接下来,使用以下命令启用对/ usr / share / phpmyadmin目录的访问:

semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/' semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"

现在,通过运行以下命令来遍历phpmyadmin目录中的所有文件:

restorecon -Rv '/usr/share/phpmyadmin/'

接下来,您将需要创建一个防火墙规则以允许来自外部网络的HTTP服务。您可以使用以下命令来允许它:

firewall-cmd --permanent --add-service=http firewall-cmd --reload

现在已经安装并配置了phpMyAdmin。现在是时候检查它是否正常工作了。

打开Web浏览器并输入URL http:// your-server-ip / phpmyadmin。您将被重定向到以下页面:

安全的phpMyAdmin

至此,phpMyAdmin实例可以正常运行,但是,保护phpMyAdmin实例不受外界影响对您来说是一项重要的任务。在本节中,我们将向您展示如何保护phpMyAdmin实例。

允许来自特定IP的phpMyAdmin

首先,您需要将phpMyAdmin配置为只能从家庭连接的IP地址访问。

您可以通过编辑/etc/httpd/conf.d/phpmyadmin.conf文件来配置它:

nano /etc/httpd/conf.d/phpmyadmin.conf

找到以下几行:

     
       Require all granted
     

并且,将它们替换为以下内容:


    Require ip your-home--connection-ip-address
    Require ip ::1

完成后保存并关闭文件。

配置额外的身份验证层

通过设置基本身份验证密码保护您的phpmyadmin目录是一个好主意。

为此,使用htpasswd工具创建一个新的身份验证文件,如下所示:

mkdir /etc/phpmyadmin htpasswd -c /etc/phpmyadmin/.htpasswd admin

系统将要求您提供管理员密码,如下所示:

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

接下来,您需要将Apache配置为使用.htpasswd文件,您可以通过编辑/etc/httpd/conf.d/phpmyadmin.conf文件来实现。

nano /etc/httpd/conf.d/phpmyadmin.conf

在“ AddDefaultCharset UTF-8”行下面添加以下行:

    Options  +FollowSymLinks +Multiviews +Indexes
    AllowOverride None
    AuthType basic
    AuthName "Authentication Required"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

保存文件并重新启动Apache服务以使更改生效:

systemctl restart httpd

访问phpMyAdmin

现在,您的phpMyAdmin实例具有额外的安全保护。打开您的Web浏览器并输入URL http:// your-server-ip / phpmyadmin。将要求您输入以前创建的用户的登录凭据如下图所示:

受保护的phpMyAdmin

提供您的管理员用户名和密码,然后单击确定按钮。您将被重定向到phpMyAdmin登录页面:

以root用户身份登录phpMyAdmin

现在,提供您的MySQL管理用户登录凭据,然后单击“执行”按钮。您应该看到以下页面:

phpMyAdmin数据库仪表板

结论

恭喜,您已经在CentOS 8服务器上成功安装并保护了phpMyAdmin。现在,您可以通过基于Web的界面创建数据库,用户,表并进行管理。如果有任何疑问,请随时问我。

Sidebar