如何疑難排解在 Lightsail 中託管的 WordPress 應用程式的資料庫連線錯誤?
當我將 WordPress 應用程式連線到 Amazon Lightsail 時,我收到下列一個或兩個錯誤: 「Error establishing a database connection.」「One or more database tables are unavailable.資料庫可能需要修復。」 我想要解決此問題。
簡短說明
您收到這些錯誤訊息的原因如下:
- 資料庫表格損壞
- 遠端資料庫連線遭到封鎖
- 資料庫服務問題
- 容量上的空間不足
- WordPress 組態檔中的登入憑證不正確
解決方法
資料庫表格損壞
若要檢查損壞的資料庫表格,請完成下列步驟:
-
前往 example.com/wp-admin,並尋找下列錯誤: 一個或多個資料庫表格無法使用。資料庫可能需要修復。
**注意:**將 example.com 取代為您的網站名稱。 -
使用文字編輯器 (例如 vi 編輯器) 來存取 wp-config.php 檔案:
$ sudo vi wp-config.php
-
直接在字行 That's all, stop editing! Happy blogging 之前新增下列字行:
define('WP_ALLOW_REPAIR' ,true);
-
前往 example.com/wp-admin/maint/repair.php,然後執行修復資料庫。
**注意:**將 example.com 取代為您的網站名稱。 -
返回 wp-config-php 檔案,然後移除在步驟 3 中新增的程式碼行。
遠端資料庫連線遭到封鎖
如果資料庫伺服器不允許從託管網站的執行個體進行遠端連線,則您無法連線到資料庫。最佳做法是將網站資料庫儲存在 Lightsail 託管資料庫中,以獲得高可用性和安全性。
若要檢查資料庫連線,請完成下列步驟:
- 檢查 wp-config.php 組態檔中的 DB_HOST 值:
**注意:**如果值不是 localhost 或 127.0.0.1,則資料庫位於遠端伺服器中。複製 DB_HOST 值以在後續步驟中使用。define('DB_HOST', '192.168.22.9');
- 使用連接埠 3306 從伺服器 telnet 到遠端伺服器:
注意:將遠端伺服器 IP 取代為您在步驟 1 中收到的 DB_HOST 值。telnet remote server IP 3306
- 如果無法連線,則遠端伺服器的資料庫組態不允許遠端連線。遠端伺服器上的防火牆也可能會阻止您的連線。請連絡外部資料庫擁有者或支援團隊,以從 Lightsail 執行個體設定連線。
資料庫服務問題
若要檢查您的資料庫服務是否已關閉,請確定 Lightsail WordPress 執行個體是使用 MySQL 還是 MariaDB 作為伺服器類型。此外,請檢查執行個體是使用原生 Linux 系統還是獨立安裝的伺服器。若要識別伺服器類型和方法,請執行下列命令:
test -d /opt/bitnami/mariadb && echo "MariaDB" || echo "MySQL"
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A" || echo "Approach B"
注意:如果您在輸出中看到方法 A,則您的伺服器使用原生 Linux 系統。如果您看到方法 B,則伺服器是獨立安裝。
MySQL 資料庫伺服器
若要檢查 MySQL 資料庫的服務問題,請完成下列步驟:
-
若要檢查資料庫伺服器狀態,請執行下列命令:
sudo /opt/bitnami/ctlscript.sh status mysql
-
如果資料庫已停止,則執行下列命令:
sudo /opt/bitnami/ctlscript.sh start mysql
-
如果仍然無法啟動資料庫服務,或在啟動過程中看到錯誤,請檢查資料庫日誌以確定根本原因。如果您的伺服器使用原生 Linux 系統,請檢查下列檔案位置:/opt/bitnami/mysql/logs/mysqld.log。如果您的伺服器是獨立安裝,請檢查下列檔案位置:/opt/bitnami/mysql/data/mysqld.log。磁碟空間不足或可用記憶體不足會影響資料庫效能和連線能力。若要檢查這些資源,請執行df 和 free 命令。
MariaDB 資料庫伺服器
若要檢查 MariaDB 資料庫的服務問題,請完成下列步驟:
-
若要檢查資料庫伺服器狀態,請執行下列命令:
sudo /opt/bitnami/ctlscript.sh status mariadb
-
如果資料庫已停止,則執行下列命令:
sudo /opt/bitnami/ctlscript.sh start mariadb
-
如果仍然無法啟動資料庫服務,或在啟動過程中看到錯誤,請檢查資料庫日誌以確定根本原因。如果您的伺服器使用原生 Linux 系統,請檢查下列檔案位置:/opt/bitnami/mariadb/logs/mysqld.log。如果您的伺服器是獨立安裝,請檢查下列檔案位置:/opt/bitnami/mariadb/data/mysqld.log。磁碟空間不足或可用記憶體不足會影響資料庫效能和連線能力。若要檢查這些資源,請執行df 和 free 命令。
容量上的空間不足
如果磁碟區的可用磁碟空間為 100% 或略低於 100%,則資料庫服務可能會發生故障。
若要檢查伺服器磁碟區,請完成下列步驟:
-
若要查看可用磁碟空間量,請執行下列命令:
$ sudo df -h
範例輸出:
Filesystem Size Used Avail Use% Mounted ondevtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 400K 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/nvme0n1p1 8.0G 8.0G 0G 100% / tmpfs 389M 0 389M 0% /run/user/1000
-
如果您沒有足夠的可用空間,請增加執行個體大小,或從伺服器刪除不必要的檔案。
-
重新啟動資料庫服務。
WordPress 組態檔中的登入憑證不正確
驗證您的憑證
請完成下列步驟:
- 前往 wp-config.php 檔案。將 DB_NAME、DB_HOST、DB_USER 和 DB_PASSWORD 中的詳細資料複製到文字檔案,以在後續步驟中使用。
- 若要從終端存取資料庫,請執行下列命令:
**注意:**將 DB_NAME、DB_HOST 和 DB_USER 取代為您在步驟 1 中複製的值。sudo mysql 'DB_NAME' -h 'DB_HOST' -u 'DB_USER' -pEnter password: ********
- 輸入具有 DB_PASSWORD 值的密碼,然後按 ENTER。
注意:如果您收到拒絕存取錯誤,表示憑證不正確。若要解決此問題,請重設資料庫使用者密碼。 - 如果您的資料庫主機位於遠端,請更新 wp-config.php 檔案中的連線字串。如果資料庫位於相同的伺服器中,則驗證 DB_NAME 為 bitnami-wordpress 且 DB_USER 為 bn_wordpress。
重設資料庫使用者密碼
請完成下列步驟:
-
若要存取 /home/bitnami/bitnami_credentials,請執行下列命令:
sudo cat /home/bitnami/bitnami_credentials
**注意:**將根資料庫密碼複製到文字檔案,以在後續步驟中使用。
-
若要登入 MySQL 或 MariaDB,請執行下列命令:
sudo mysql -u root -pEnter password: ********
**注意:**將 mysql 取代為您的伺服器,並將 ******** 取代為您在步驟 1 中複製的根資料庫密碼。如果您無法使用密碼登入,請依照 Bitnami 網站上的說明重設 MySQL 或 MariaDB 的密碼。
-
若要驗證 bitnami_wordpress 資料庫是否存在,請執行下列查詢:
show databases;
-
若要驗證 bn-wordpress 資料庫使用者是否存在,請執行以下查詢:
SELECT user FROM mysql.user;
-
如果您使用 MySQL 資料庫,請執行下列命令重設 bn-wordpress 使用者的資料庫密碼:
alter user 'bn_wordpress'@'localhost' identified by 'PASSWORD';alter user 'bn_wordpress'@'127.0.0.1' identified by 'PASSWORD';
如果您使用 MariaDB 資料庫,請執行以下命令以重設 bn-wordpress 使用者的資料庫密碼:
alter user 'bn_wordpress'@'%' identified by 'PASSWORD';
注意:將 PASSWORD 取代為驗證您的憑證的步驟 3 中 wp-config.php 檔案中的密碼。
如果上述解決方案都無法解決問題,請從快照啟動新的 Lightsail 執行個體。

相關內容
- 已提問 1 年前lg...
- 已提問 6 個月前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前