本教程將向您展示如何使用 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
配置數據庫。 按 Tab 鍵,[はい]選擇。
這也將創建一個名為的新數據庫用戶 phpmyadmin
..給這個用戶一個密碼。
然後將要求您選擇要配置的 Web 服務器。 Nginx 不在列表中,所以按 Tab[OK]點擊跳過此步驟。
完成後,一個名為的新數據庫 phpmyadmin
數據庫用戶創建 phpmyadmin
您擁有管理此數據庫所需的權限。如果你和我一樣感興趣,可以登錄 MariaDB 看看你有什麼權限。 phpmyadmin
用戶已被授予。
您可以使用以下命令登錄 MariaDB 服務器:
sudo mysql -u root
然後檢查您的權限。
show grants for [email protected];
輸出:
如您所見,用戶 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
步驟 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 證書,如以下消息所示。
第 4 步:測試 TLS 證書
訪問 ssllabs.com 以測試您的 TLS 證書和配置。你需要得到 一個+ 因為啟用了 HSTS。
第 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。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。當心:)