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

加载更多搜索结果...

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

在 CentOS 8 上安装和保护 phpMyAdmin

在此页

  1. 要求
  2. 安装 LAMP 服务器
  3. 配置 MariaDB
  4. 安装 phpMyAdmin
  5. 为 phpMyAdmin 配置 Apache
  6. 配置 SELinux 和防火墙
  7. 安全的 phpMyAdmin
    1. 允许来自特定 IP 的 phpMyAdmin
    2. 配置额外的身份验证层

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

    特征

    • 提供简单且用户友好的网络界面。
    • 从 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

    默认情况下,phpMyAdmin 在 CentOS 8 默认存储库中不可用。因此,您需要从其官方网站下载最新版本的 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
    
    <Directory /usr/share/phpmyadmin/>
       AddDefaultCharset UTF-8
    
       <IfModule mod_authz_core.c>
         # Apache 2.4
         <RequireAny> 
          Require all granted
         </RequireAny>
       </IfModule>
       <IfModule !mod_authz_core.c>
         # Apache 2.2
         Order Deny,Allow
         Deny from All
         Allow from 127.0.0.1
         Allow from ::1
       </IfModule>
    </Directory>
    
    <Directory /usr/share/phpmyadmin/setup/>
       <IfModule mod_authz_core.c>
         # Apache 2.4
         <RequireAny>
           Require all granted
         </RequireAny>
       </IfModule>
       <IfModule !mod_authz_core.c>
         # Apache 2.2
         Order Deny,Allow
         Deny from All
         Allow from 127.0.0.1
         Allow from ::1
       </IfModule>
    </Directory>
    

    完成后保存并关闭文件。然后,使用以下命令重新启动 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 和防火墙

    默认情况下,SELinux 在 CentOS 8 中启用。因此您需要配置 SELinux 以使 phpMyAdmin 正常工作。

    首先,使用以下命令安装 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

    找到以下几行:

         <RequireAny>
           Require all granted
         </RequireAny>
    

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

    <RequireAny>
        Require ip your-home--connection-ip-address
        Require ip ::1
    </RequireAny>
    

    完成后保存并关闭文件。

    配置额外的身份验证层

    通过设置基本身份验证来密码保护您的 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 登录页面:

    现在,提供您的 MySQL 管理用户登录凭据并单击 Go 按钮。您应该会看到以下页面:

    结论

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

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