在Debian 10 Buster上使用Apache(LAMP)安装phpMyAdmin

本教程将向您展示如何在Debian 10 Buster上使用Apache,MariaDB,PHP7.3(LAMP堆栈)安装phpMyAdmin。 phpMyAdmin是一个免费的开放源代码的基于Web的数据库管理工具,用PHP编写。 它为用户提供了图形Web界面来管理MySQL或MariaDB数据库。 我们还将学习如何在phpMyAdmin上启用两因素身份验证。

phpMyAdmin允许管理员执行以下操作:

  • 浏览数据库和表;
  • 创建,复制,重命名,更改和删除数据库;
  • 创建,复制,重命名,更改和删除表;
  • 进行桌子维护;
  • 添加,编辑和删除字段;
  • 执行任何SQL语句,甚至多个查询;
  • 创建,更改和删除索引;
  • 将文本文件加载到表中;
  • 创建和读取表或数据库的转储;
  • 将数据导出为SQL,CSV,XML,Word,Excel,PDF和LaTeX格式;
  • 管理多个服务器;
  • 管理MySQL用户和特权;
  • 使用配置提示检查服务器设置和运行时信息;
  • 检查MyISAM表中的参照完整性;
  • 使用示例查询(QBE)自动创建复杂的查询
  • 连接所需的表;
  • 创建数据库布局的PDF图形;
  • 在数据库或其子集中进行全局搜索;
  • 使用一组预定义的功能将存储的数据转换为任何格式,例如将BLOB数据显示为图像或下载链接;
  • 管理InnoDB表和外键;

先决条件

要遵循本教程,您需要在本地计算机或远程服务器上运行的Debian 10 OS。

如果您正在寻找VPS(虚拟专用服务器),则可以通过我的推荐链接在Vultr创建一个帐户,以获取50美元的免费信用(仅限新用户)。 并且,如果您需要使用域名设置phpMyAdmin,我建议您从NameCheap购买域名,因为价格低廉,而且它们免费提供whois隐私保护。

假设您已经在Debian 10上安装了LAMP堆栈。如果没有,请查看以下教程。

  • 如何在Debian 10 Buster上安装LAMP堆栈(Apache,MariaDB,PHP7.3)

请注意,在Debian上安装软件时,您需要具有root特权。 你可以加 须藤 在命令开头或使用 su - 命令切换到root用户。

有了这一点,让我们开始安装phpMyAdmin。

步骤1:在Debian 10 Server上下载phpMyAdmin

phpMyAdmin未包含在Debian 10软件存储库中,因此我们必须手动下载该软件。 转到phpMyAdmin下载页面以检查最新的稳定版本。 然后运行以下命令进行下载。

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

提示:您始终可以使用上述URL格式来下载phpMyAdmin的最新稳定版本。 只需用最新版本号替换4.9.0.1。

然后将其提取。

sudo apt install unzip

unzip phpMyAdmin-4.9.0.1-all-languages.zip

将phpMyadmin 4.9移至 /usr/share/ 目录。

sudo mv phpMyAdmin-4.9.0.1-all-languages /usr/share/phpmyadmin

然后使Web服务器用户(www-data)作为此目录的所有者。

sudo chown -R www-data:www-data /usr/share/phpmyadmin

步骤2:为phpMyAdmin创建MariaDB数据库和用户

现在,我们需要登录到MariaDB控制台,并为phpMyAdmin创建数据库和用户。 默认情况下,Debian上的MaraiDB软件包使用unix_socket来认证用户登录,这基本上意味着您可以使用操作系统的用户名和密码登录MariaDB控制台。 因此,您可以运行以下命令来登录,而无需提供MariaDB根密码。

sudo mysql -u root

接下来,使用以下SQL命令为phpMyAdmin创建一个新数据库。 本教程将其命名 phpmyadmin,您可以为数据库使用任意名称。

CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

以下SQL命令将创建 phpmyadmin 数据库用户并设置密码,并同时向新用户授予新数据库的所有权限,以便以后在phpMyAdmin上可以写入数据库。 用您的密码替换红色文本。

GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'your_preferred_password';

刷新特权表并退出MariaDB控制台。

FLUSH PRIVILEGES;

EXIT;

步骤3:安装必需和推荐的PHP模块。

运行以下命令以安装phpMyAdmin所需或推荐的PHP模块。

sudo apt install php-imagick php-phpseclib php-php-gettext php7.3-common php7.3-mysql php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp

然后重新启动Apache。

sudo systemctl restart apache2

步骤4:为phpMyAdmin创建Apache配置

如果要从子目录访问phpMyAdmin Web界面,请使用以下命令创建配置代码段。

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

将以下文本粘贴到文件中。

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

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

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

保存并关闭文件。 然后启用此配置代码段。

sudo a2enconf phpmyadmin.conf

我们还需要创建phpMyAdmin临时文件夹。

sudo mkdir -p /var/lib/phpmyadmin/tmp
sudo chown www-data:www-data /var/lib/phpmyadmin/tmp

重新加载Apache以使更改生效。

sudo systemctl reload apache2

现在您可以访问phpMyAdmin Web界面,网址为

your-server-ip/phpmyadmin

如果在本地Debian计算机上安装了phpMyAdmin,则可以通过在浏览器地址栏中键入以下文本来访问phpMyAdmin Web界面。

localhost/phpmyadmin

如果连接被拒绝或无法完成,则可能是防火墙阻止了HTTP请求。 如果使用的是iptables防火墙,则需要运行以下命令来打开TCP端口80和443。

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

如果使用的是UFW防火墙,请运行此命令以打开TCP端口80和443。

sudo ufw allow http
sudo ufw allow https

步骤5:从子域访问phpMyAdmin

有时,您可能想使用子域来访问phpMyAdmin Web界面。 这样,您可以启用HTTPS加密通信。

首先,我们需要为phpMyAdmin创建一个Apache虚拟主机。 现有的phpMyAdmin配置代码段可以用作模板。 让我们将其复制到新文件中。

sudo cp /etc/apache2/conf-enabled/phpmyadmin.conf /etc/apache2/sites-available/phpmyadmin.conf

然后使用命令行文本编辑器(例如Nano)编辑新文件。

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

在此文件的开头添加以下行。 将pma.example.com替换为phpMyAdmin的首选子域。 不要忘记为此子域创建DNS A记录。

<VirtualHost *:80>
    ServerName pma.example.com
    DocumentRoot /usr/share/phpmyadmin

    ErrorLog ${APACHE_LOG_DIR}/pma.error.log
    CustomLog ${APACHE_LOG_DIR}/pma.access.log combined

在此文件的末尾添加以下行。

</VirtualHost>

保存并关闭文件。 (要在Nano文本编辑器中保存文件,请按 Ctrl+O,然后按Enter确认。 要退出,请按 Ctrl+X。)然后启用此虚拟主机。

sudo a2ensite phpmyadmin.conf

重新加载Apache Web服务器以使此更改生效。

sudo systemctl reload apache2

现在您应该能够通过以下方式访问phpMyAdmin Web界面

pma.example.com

Debian 10 phpmyadmin Apache

在登录表单中输入用户凭据之前,让我们启用HTTPS。

步骤6:使用Apache在phpMyAdmin上启用HTTPS

为了保护phpMyadmin Web界面的安全,我们可以安装免费的Let’s Encrypt TLS证书。 运行以下命令以从Debian 10软件存储库安装Let’s Encrypt客户端(certbot)。

sudo apt install certbot python3-certbot-apache

Python3-certbot-apache 是Certbot的Apache插件。 现在运行以下命令以获取并安装TLS证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email protected]

说明:

  • –apache: 使用Apache身份验证器和安装程序
  • –同意:同意让我们加密服务条款
  • –重定向:添加301重定向。
  • –hsts:将Strict-Transport-Security标头添加到每个HTTP响应。
  • –staple-ocsp:启用OCSP装订。
  • –必须装订:将OCSP必须装订扩展名添加到证书中。
  • -d 标志后面是域名列表,以逗号分隔。 您最多可以添加100个域名。
  • -电子邮件:用于注册和恢复联系的电子邮件。

系统将询问您是否要接收来自EFF(电子前沿基金会)的电子邮件。 选择Y或N后,将自动为您获取并配置您的TLS证书,如以下消息所示。

安装phpmyadmin debian 10 buster apache

步骤7:运行phpMyAdmin安装脚本

在浏览器地址栏中输入以下内容。

your-server-ip/phpmyadmin/setup

要么

pma.example.com/setup

点击 New Server 按钮来配置服务器。

Debian 10 Buster phpmyadmin安装脚本

然后只需点击 Apply 按钮。

在phpmyadmin中添加新服务器

接下来,单击显示按钮以显示配置文件。

debian 10 phpmyadmin config.inc.php

在里面 /usr/share/phpmyadmin/ 目录,创建config.inc.php文件。

sudo nano /usr/share/phpmyadmin/config.inc.php

复制内容 config.inc.php 从phpMyAdmin设置页面并将其粘贴到 /usr/share/phpmyadmin/config.inc.php 文件。

Debian Buster phpmyadmin配置存储

步骤8:排除phpMyAdmin登录错误

现在,如果您尝试使用MariaDB根帐户登录phpMyAdmin,您可能会看到以下错误。

#1698 - Access denied for user 'root '@'localhost'

mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'

如果您使用用户登录 phpmyadmin,您不会看到上述错误。 但是,用户 phpmyadmin 只能用于管理 phpmyadmin 数据库。 错误的原因是,默认情况下,通过unix_socket插件对MariDB超级用户进行身份验证,而不是使用 mysql_native_password 插入。 为了解决这个问题,我们可以创建另一个管理员用户,并将所有特权授予新的管理员用户。

从命令行登录到MariaDB服务器。

sudo mysql -u root

创建一个具有密码身份验证的管理员用户。

create user [email protected] identified by 'your-preferred-password';

在所有数据库上授予所有特权。

grant all privileges on *.* to [email protected] with grant option;

刷新特权并退出;

flush privileges;

exit;

现在,您可以使用来登录phpMyAmin admin 帐户并管理所有数据库。

mysqli_real_connect HY0001698用户'root'@'localhost'的访问被拒绝

步骤9:设置phpMyAdmin配置存储

现在,在phpMyAdmin控制面板中,您可以看到一条警告消息。

The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why. 
Or alternately go to 'Operations' tab of any database to set it up there.

单击查找原因链接。 然后点击创建链接以在 phpmyadmin 数据库。

设置phpMyAdmin配置存储

步骤10:限制对/ setup目录的访问

为了限制对/ setup目录的访问,我们可以使用Apache Web服务器启用基本密码验证。 执行以下命令,设置用户密码。 admin/etc/apache2/htpasswd 文件用于存储用户名和密码。

sudo htpasswd -c /etc/apache2/htpasswd admin

然后编辑phpMyAdmin的Apache配置文件

sudo nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf

要么

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

添加以下行。

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/apache2/htpasswd
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

保存并关闭文件。 然后重新加载Apache以使更改生效。

sudo systemctl reload apache2

如果再次访问phpMyAdmin设置脚本,将要求您输入用户名和密码。

限制对phpmyadmin安装脚本的访问

启用两因素身份验证

您还可以通过启用双重身份验证来加强phpMyAdmin,这是4.8版中新增的功能。 要启用它,请登录phpMyAdmin。 然后去 Settings -> Two-factor authentication 然后选择 身份验证应用程序(2FA)

安全的phpmyadmin

单击后 配置两因素身份验证 按钮,系统会显示一个QR码,您需要使用手机上的两因素身份验证应用程序对其进行扫描。

配置两因素认证phpmyadmin

Google Authenticator是一个受欢迎的2FA应用程序,但我推荐FreeOTP,它是由Red Hat开发的开源2FA应用程序。 输入2FA应用程序生成的身份验证代码后,就会启用两因素身份验证。 如果现在注销并重新登录,则除了用户名和密码外,还需要输入验证码。

安全的phpmyadmin

包起来

我希望本教程可以帮助您在Debian 10 Buster上使用LAMP安装phpMyAdmin。 您可能还需要遵循phpMyAdmin安全公告RSS feed。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂

Sidebar