本教程將向您展示如何使用 Nginx、MariaDB 和 PHP7.4 (LEMP) 在 Ubuntu 20.04 上安裝 phpMyAdmin。 phpMyAdmin 是一個免費的開源基於 Web 的數據庫管理工具,用 PHP 編寫。 為用戶提供用於管理 MySQL 或 MariaDB 數據庫的圖形 Web 界面。

使用 phpMyAdmin,管理員可以:

  • 瀏覽數據庫和表格。
  • 創建、複製、重命名、更改和刪除數據庫。
  • 創建、複製、重命名、更改和刪除表。
  • 執行表維護。
  • 添加、編輯和刪除字段。
  • 執行任意 SQL 語句,即使是多個查詢。
  • 創建、修改、刪除索引。
  • 將文本文件加載到表中。
  • 創建和讀取表或數據庫轉儲。
  • 將數據導出為 SQL、CSV、XML、Word、Excel、PDF、LaTeX 格式。
  • 管理多台服務器。
  • 管理 MySQL 用戶和權限。
  • 使用配置提示查看服務器設置和運行時信息。
  • 檢查 MyISAM 表的引用完整性。
  • 使用 Query-by-example (QBE) 自動創建複雜查詢
  • 加入所需的表。
  • 創建數據庫佈局的 PDF 圖形。
  • 對數據庫或其子集執行全局搜索。
  • 使用一組預定義的功能將存儲的數據轉換為任何格式,例如將 blob 數據顯示為圖像或下載鏈接。
  • 管理 InnoDB 表和外鍵。

先決條件

要學習本教程,您需要在本地計算機或遠程服務器上運行 Ubuntu 20.04 操作系統。

如果您正在尋找 VPS(虛擬專用服務器),您可以單擊此特殊鏈接以在 Digital Ocean 上獲得 100 美元的免費信用。 (僅限新用戶)。如果您已經是 Digital Ocean 用戶,您可以單擊此特殊鏈接在 Vultr 中獲得 50 美元的免費積分(僅限新用戶)。

假設 LEMP 堆棧安裝在 Ubuntu 20.04 上。如果沒有,請查看下面的教程。

  • 如何在 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 配置數據庫。 按 T​​ab 鍵,[はい]選擇。

這也將創建一個名為的新數據庫用戶 phpmyadmin..給這個用戶一個密碼。

然後將要求您選擇要配置的 Web 服務器。 Nginx 不在列表中,所以按 Tab[OK]點擊跳過此步驟。

安裝-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 請記住使用實際的子域並為該子域創建 DNSA 記錄。

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

如何安裝 phpmyadmin-in-ubuntu

步驟 3:安裝 TLS 證書

您可以安裝免費的 Let’s Encrypt TLS 證書來保護您的 phpMyadmin Web 界面。從 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 驗證器和安裝程序
  • – 同意: 我同意 Let’s Encrypt 服務條款
  • -重定向: 301 通過重定向應用 HTTPS。
  • –hsts:將 Strict-Transport-Security 標頭添加到所有 HTTP 響應。
  • –主食-ocsp:啟用 OCSP 訂書釘。
  • – 需要綁定:將 OCSP MustStaple 擴展添加到證書。
  • -d 以下標誌是以逗號分隔的域名列表。您最多可以添加 100 個域。
  • -電子郵件:用於註冊和恢復聯繫人的電子郵件。

系統將詢問您是否願意接收來自 EFF(電子前沿基金會)的電子郵件。 如果選擇 Y 或 N,則會自動獲取和配置 TLS 證書,如以下消息所示。

phpmyadmin-https-ubuntu-20.04

第 4 步:測試 TLS 證書

訪問 ssllabs.com 以測試您的 TLS 證書和配置。你需要得到 一個+ 因為啟用了 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 數據庫。錯誤的原因是默認情況下 MariDBroot 用戶通過 unix_socket 插件進行身份驗證,而不是使用它。 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 證書

要自動更新 Let’s Encrypt 證書,只需編輯 root 用戶的 crontab 文件。

sudo crontab -e

然後在底部添加以下行:

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

您需要重新加載 Nginx 以獲取客戶端的新證書。

包起來

我希望本教程能幫助您在 Ubuntu 20.04LTS 上使用 Nginx 安裝 phpMyAdmin。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。當心:)