如何在Ubuntu 20.04 LTS上使用Nginx(LEMP)安装phpMyAdmin

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

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

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

先决条件

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

如果您正在寻找VPS(虚拟专用服务器),则可以单击此特殊链接以在DigitalOcean上获得$ 100的免费信用。 (仅适用于新用户)。 如果您已经是DigitalOcean用户,则可以单击此特殊链接以在Vultr上获得$ 50的免费信用(仅适用于新用户)。

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

  • 如何在Ubuntu 20.04上安装LEMP堆栈(Nginx,MariaDB,PHP7.4)

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

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

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

sudo apt update
sudo apt install phpmyadmin

上面的命令将安装所有必需的依赖项,包括PHP7扩展。 在安装过程中,它将询问您是否要使用 dbconfig-common 配置数据库。 按Tab键选择是。

这还将创建一个新的数据库用户,名为 phpmyadmin。 给该用户输入密码。

phpmyadmin-password-lemp-ubuntu-20.04

接下来,它将提示您选择要配置的Web服务器。 Nginx不在列表中,因此请按Tab键并单击“确定”以跳过此步骤。

install-phpmyadmin-ubuntu-20.04

完成后,将新建一个名为 phpmyadmin 创建并且数据库用户 phpmyadmin 具有管理此数据库的必要特权。 如果您像我一样好奇,可以登录MariaDB并检查哪些特权 phpmyadmin 用户已被授予。

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

sudo mysql -u root

然后检查特权。

show grants for [email protected];

输出:

phpmyadmin数据库配置

如您所见,用户 phpmyadmin 对数据库拥有所有特权 phpmyadmin。 现在您可以执行以下命令退出:

exit;

步骤2:为phpMyAdmin创建Nginx服务器块

为了能够访问phpMyAdmin Web界面,我们需要通过运行以下命令来创建Nginx服务器块。

sudo nano /etc/nginx/conf.d/phpmyadmin.conf

我们将对其进行配置,以便我们可以通过子域访问phpMyAdmin。 将以下文本粘贴到文件中。 更换 pma.example.com 与您的实际子域,不要忘记为其创建DNS A记录。

server {
  listen 80;
  listen [::]:80;
  server_name pma.example.com;
  root /usr/share/phpmyadmin/;
  index index.php index.html index.htm index.nginx-debian.html;

  access_log /var/log/nginx/phpmyadmin_access.log;
  error_log /var/log/nginx/phpmyadmin_error.log;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ ^/(doc|sql|setup)/ {
    deny all;
  }

  location ~ .php$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /.ht {
    deny all;
  }
}

您的phpMyAdmin文件位于 /usr/share/phpmyadmin/ 目录。 保存并关闭文件。 然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

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

pma.example.com

如何在Ubuntu中安装phpmyadmin

步骤3:安装TLS证书

为了保护phpMyadmin Web界面的安全,我们可以安装免费的Let’s Encrypt TLS证书。 从Ubuntu 20.04软件存储库安装Let’s Encrypt客户端,如下所示:

sudo apt install certbot python3-certbot-nginx

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

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

哪里:

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

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

phpmyadmin-https-ubuntu-20.04

步骤4:测试您的TLS证书

转到ssllabs.com测试TLS证书和配置。 你应该得到 A + 因为启用了HSTS。

使用https安全phpmyadmin

步骤5:排除phpMyAdmin登录错误

如果使用MariaDB根帐户登录,则可能会看到以下错误。

 #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 mariadb -u root

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

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

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

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

刷新特权并退出;

flush privileges;

exit;

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

TLS证书自动续订

要自动续订我们的加密证书,只需编辑根用户的crontab文件。

sudo crontab -e

然后在底部添加以下行。

@daily certbot renew --quiet && systemctl reload nginx

需要重新加载Nginx才能将新证书提取给客户端。

包起来

我希望本教程可以帮助您在Ubuntu 20.04 LTS上使用Nginx安装phpMyAdmin。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 照顾自己:)

Sidebar