如何在 Ubuntu 20.04 上使用 Apache (LAMP) 安装 phpMyAdmin

本教程将向您展示如何在 Ubuntu 20.04 LTS 上使用 Apache、MariaDB、PHP7.4(LAMP 堆栈)安装 phpMyAdmin。phpMyAdmin 是一个用 PHP 编写的免费和开源的基于 Web 的数据库管理工具。它为用户提供了图形化的 Web 界面来管理 MySQL 或 MariaDB 数据库。

phpMyAdmin 允许管理员:

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

先决条件

要学习本教程,您需要在本地计算机或远程服务器上运行 Ubuntu 20.04 操作系统。

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

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

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

步骤 1:在 Ubuntu 20.04 上下载并安装 phpMyAdmin

phpMyAdmin 包含在 Ubuntu 20.04 软件存储库中。所以我们可以使用下面的命令轻松安装它。

sudo apt update
sudo apt install phpmyadmin

上面的命令将安装所有必需的依赖项,包括 PHP7 扩展。在安装过程中,它会提示您选择要配置的 Web 服务器。点击space栏选择apache2。(星号表示该项目已被选中)。然后按Tab键 和Enter确认您的选择。

安装 phpMyAdmin
安装 phpMyAdmin

在下一个屏幕中,选择Yes为 phpMyAdmin 配置数据库dbconfig-common

 phpMyAdmin 配置数据库
phpMyAdmin 配置数据库

然后phpmyadmin在 MariaDB/MySQL 中为用户设置密码。

MariaDB/MySQL 中为用户设置密码
MariaDB/MySQL 中为用户设置密码

完成此步骤后,将phpmyadmin创建一个名为的新数据库,并且数据库用户phpmyadmin具有管理此数据库的必要权限。如果你和我一样好奇,你可以登录 MariaDB 并查看phpmyadmin用户被授予了哪些权限。

您可以使用以下命令登录到 MariaDB 服务器。

sudo mysql -u root

然后检查phpmyadmin用户的权限。

show grants for phpmyadmin@localhost;

输出:

phpmyadmin用户的权限
phpmyadmin用户的权限

如您所见,用户phpmyadmin拥有数据库的所有权限phpmyadmin。现在您可以通过执行退出:

exit;

现在运行以下命令来检查/etc/apache2/conf-enabled/phpmyadmin.conf文件是否存在。

file /etc/apache2/conf-enabled/phpmyadmin.conf

如果安装过程没有错误,您应该会看到以下命令输出。

/etc/apache2/conf-enabled/phpmyadmin.conf: symbolic link to ../conf-available/phpmyadmin.conf

如果您的服务器上不存在此文件,则可能是您没有在 phpMyAdmin 设置向导中选择 Apache Web 服务器。您可以使用以下命令修复它。

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl reload apache2

步骤 2:从子目录访问 phpMyAdmin

安装phpMyAdmin的时候,在 放置了一个配置文件/etc/apache2/conf-enabled/phpmyadmin.conf,可以让我们通过子目录访问phpMyAdmin。如果您在同一台 Ubuntu 20.04 服务器上安装了其他 Web 应用程序,如WordPress,那么只需/phpmyadmin在浏览器地址栏中添加您的域名即可。

example.com/phpmyadmin
访问 phpMyAdmin
访问 phpMyAdmin

如果 phpMyAdmin 安装在您的本地 Ubuntu 计算机上,那么您可以通过在浏览器地址栏中输入以下文本来访问 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 80,443/tcp

现在您可以使用 MariaDB/MySQL 用户名和密码登录 phpMyAdmin。如果您无法以 root 身份登录,请转到步骤 5 以解决此问题。

第 3 步:从子域访问 phpMyAdmin

如果您的 Ubuntu 20.04 服务器没有其他 Apache 虚拟主机,那么您可能需要使用子域来访问 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

这个文件缺少<VirtualHost>标签,所以我们需要在这个文件的开头添加以下几行。替换pma.example.com为您的 phpMyAdmin 子域。不要忘记为此子域创建 DNS A 记录。

<VirtualHost *:80>ServerName pma.example.comDocumentRoot /usr/share/phpmyadmin
ErrorLog ${APACHE_LOG_DIR}/pma.error.logCustomLog ${APACHE_LOG_DIR}/pma.access.log combined

在此文件的末尾添加以下行以关闭<VirtualHost>标记。

</VirtualHost>
从子域访问 phpMyAdmin
从子域访问 phpMyAdmin

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

sudo a2ensite phpmyadmin.conf

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

sudo systemctl reload apache2

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

pma.example.com
访问 phpMyAdmin Web 界面
访问 phpMyAdmin Web 界面

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

第 4 步:使用 Apache 在 phpMyAdmin 上启用 HTTPS

为了保护 phpMyadmin Web 界面,我们可以安装免费的 Let’s Encrypt TLS 证书。运行以下命令以从 Ubuntu 20.04 软件存储库安装 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 身份验证器和安装程序
  • –agree-tos:同意让我们加密服务条款
  • –redirect:通过添加 301 重定向来强制执行 HTTPS。
  • –hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应。
  • –staple-ocsp:启用 OCSP 装订。
  • –must-staple:将 OCSP Must Staple 扩展添加到证书中。
  • -d标志后跟域名列表,以逗号分隔。您多可以添加 100 个域名。
  • –email:用于注册和恢复联系人的电子邮件。

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

步骤 5:解决 phpMyAdmin 登录错误

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

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

或者

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

如果您使用 user 登录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并管理所有数据库。

登录 phpMyAmin并管理所有数据库
登录 phpMyAmin并管理所有数据库

总结

我希望本教程可以帮助您在 Ubuntu 20.04 上使用 LAMP 安装 phpMyAdmin。

滚动至顶部