在 Debian 10 Buster 上使用 Apache (LAMP) 安装 phpMyAdmin
本教程将向您展示如何在 Debian 10 Buster 上使用 Apache、MariaDB、PHP7.3(LAMP 堆栈)安装 phpMyAdmin。 phpMyAdmin 是一个用 PHP 编写的免费开源的基于 Web 的数据库管理工具。它为用户提供图形Web界面来管理MySQL或MariaDB数据库。我们还将学习如何在 phpMyAdmin 上启用双因素身份验证。
phpMyAdmin 允许管理员:
- 浏览数据库和表格;
- 创建、复制、重命名、更改和删除数据库;
- 创建、复制、重命名、更改和删除表;
- 执行表维护;
- 添加、编辑和删除字段;
- 执行任何 SQL 语句,甚至多个查询;
- 创建、更改和删除索引;
- 将文本文件加载到表中;
- 创建和读取表或数据库的转储;
- 将数据导出为 SQL、CSV、XML、Word、Excel、PDF 和 LaTeX 格式;
- 管理多个服务器;
- 管理MySQL用户和权限;
- 使用配置提示检查服务器设置和运行时信息;
- 检查 MyISAM 表中的引用完整性;
- 使用示例查询 (QBE) 自动创建复杂查询
- 连接所需的表;
- 创建数据库布局的 PDF 图形;
- 在数据库或其子集中进行全局搜索;
- 使用一组预定义函数将存储的数据转换为任何格式,例如将 BLOB 数据显示为图像或下载链接;
- 管理 InnoDB 表和外键;
先决条件
要学习本教程,您需要在本地计算机或远程服务器上运行 Debian 10 操作系统。
如果您正在寻找 VPS(虚拟专用服务器),那么您可以通过我的推荐链接在 Vultr 创建一个帐户,以获得 50 美元的免费积分(仅限新用户)。如果您需要使用域名设置 phpMyAdmin,我建议您从 NameCheap 购买域名,因为价格低廉,而且免费提供 whois 隐私保护。
假设您已经在 Debian 10 上安装了 LAMP 堆栈。如果没有,请查看以下教程。
- 如何在 Debian 10 Buster 上安装 LAMP 堆栈(Apache、MariaDB、PHP7.3)
请注意,在 Debian 上安装软件时需要具有 root 权限。您可以在命令开头添加sudo,或使用su -命令切换到root用户。
好了,让我们开始安装 phpMyAdmin。
第1步:在Debian 10服务器上下载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 root 密码。
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然后重新启动阿帕奇。
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如果 phpMyAdmin 安装在您的本地 Debian 计算机上,那么您可以通过在浏览器地址栏中输入以下文本来访问 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在登录表单中输入用户凭据之前,让我们启用 HTTPS。
第 6 步:使用 Apache 在 phpMyAdmin 上启用 HTTPS
为了保护 phpMyadmin Web 界面的安全,我们可以安装免费的 Let’s Encrypt TLS 证书。运行以下命令从 Debian 10 软件存储库安装 Let’s Encrypt 客户端 (certbot)。
sudo apt install certbot python3-certbot-apachePython3-certbot-apache 是 Certbot 的 Apache 插件。现在运行以下命令来获取并安装 TLS 证书。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email 解释:
- -apache: 使用 Apache 身份验证器和安装程序
- -agree-tos:同意 Let’s Encrypt 服务条款
- -redirect:添加301重定向。
- -hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应中。
- -staple-ocsp:启用 OCSP 装订。
- -must-staple:将 OCSP Must Staple 扩展添加到证书中。
- -d 标志后面是域名列表,以逗号分隔。您最多可以添加 100 个域名。
- -电子邮件:用于注册和恢复联系的电子邮件。
系统会询问您是否希望接收来自 EFF(电子前沿基金会)的电子邮件。选择 Y 或 N 后,将自动为您获取并配置您的 TLS 证书,如下面的消息所示。
第 7 步:运行 phpMyAdmin 设置脚本
在浏览器地址栏中输入以下内容。
your-server-ip/phpmyadmin/setup或者
pma.example.com/setup单击新建服务器按钮配置服务器。
然后只需单击应用按钮即可。
接下来,单击“显示”按钮以显示配置文件。
在 /usr/share/phpmyadmin/ 目录中,创建 config.inc.php 文件。
sudo nano /usr/share/phpmyadmin/config.inc.php从 phpMyAdmin 设置页面复制 config.inc.php 的内容并将其粘贴到 /usr/share/phpmyadmin/config.inc.php 文件中。
步骤 8:解决 phpMyAdmin 登录错误
现在,如果您尝试使用 MariaDB root 帐户登录 phpMyAdmin,您可能会看到以下错误。
#1698 - Access denied for user 'root '@'localhost'和
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'如果您使用用户 phpmyadmin 登录,您将不会看到上述错误。但是,用户phpmyadmin只能用于管理phpmyadmin数据库。错误的原因是默认情况下 MariDB root 用户是通过 unix_socket 插件进行身份验证的,而不是使用 mysql_native_password 插件。为了解决这个问题,我们可以创建另一个管理员用户,并将所有权限授予新的管理员用户。
从命令行登录 MariaDB 服务器。
sudo mysql -u root创建具有密码身份验证的管理员用户。
create user admin@localhost identified by 'your-preferred-password';授予所有数据库的所有权限。
grant all privileges on *.* to admin@localhost with grant option;刷新权限并退出;
flush privileges;
exit;现在您可以使用 admin 帐户登录 phpMyAmin 并管理所有数据库。
步骤 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 数据库中创建表。
步骤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,这是 4.8 版本中添加的功能。要启用它,请登录 phpMyAdmin。然后转到设置 -> 双因素身份验证并选择身份验证应用程序 (2FA)。
单击配置双因素身份验证按钮后,您将看到一个二维码,您需要使用手机上的双因素身份验证应用程序扫描该二维码。
Google Authenticator 是一款流行的 2FA 应用程序,但我推荐 FreeOTP,它是 Red Hat 开发的开源 2FA 应用程序。输入 2FA 应用程序生成的身份验证代码后,即会启用双因素身份验证。如果您现在注销并重新登录,除了用户名和密码之外,您还需要输入身份验证码。
包起来
我希望本教程可以帮助您在 Debian 10 Buster 上使用 LAMP 安装 phpMyAdmin。您可能还想关注 phpMyAdmin 安全公告 RSS 源。与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取更多提示和技巧。保重 🙂











