如何解決 Lightsail 中託管的以 WordPress 為基礎的應用程式上的資料庫連線錯誤?
連線至 WordPress 應用程式時,我收到以下一個或兩個錯誤:
「建立資料庫連線時發生錯誤。」 「一個或多個資料庫表格無法使用。資料庫可能需要修復。」
我該如何解決這些錯誤?
簡短描述
發生錯誤「建立資料庫連線時發生錯誤」的原因如下:
- 存在損毀的資料庫表格。
- 遠端資料庫連線已停用。
- 資料庫服務已關閉。
- 您的磁碟區空間不足。
- 您的 WordPress 組態檔案中有不正確的登入憑證。
解決方案
損毀的資料庫表格
在瀏覽器中開啟您的網站 (例如,example.com/wp-admin) 的 wp-admin 頁面,並查找錯誤「一個或多個資料庫表無法使用。資料庫可能需要修復。」如果您看到此錯誤,則可能由於資料庫表格損壞而出現「建立資料庫連線時發生錯誤」錯誤。若要修復損毀的表格,請執行下列動作:
1. 使用文字編輯器,如 vi 編輯器存取 wp-config.php 檔案。
$ sudo vi wp-config.php
2. 在您的 wp-config.php 檔案中新增以下行。確保在「就是這樣,停止編輯!享受部落格」 之前新增一行。
define('WP_ALLOW_REPAIR' ,true);
3. 將上述設定新增至檔案之後,存取下列 URL,然後執行修復資料庫:
/wp-admin/maint/repair.php (例如,example.com/wp-admin/maint/repair.php)
4. 執行資料庫修復後,移除新增至 wp-config.php 檔案的程式碼行。如果不移除該行,則任何人都可以在您的資料庫上執行修復。
已停用遠端資料庫連線
有時資料庫位駐留在遠端資料庫伺服器。如果資料庫伺服器不允許來自託管網站之執行個體的遠端連線,則您無法連線至資料庫。若要對錯誤進行疑難排解,請執行以下操作:
1. 檢查組態檔案 wp-config.php 的 DB_HOST 值。如果主機不是 localhost 或 127.0.0.1,則資料庫駐留在遠端伺服器中,如下列範例所示:
define('DB_HOST', '192.168.22.9');
2. 嘗試在連接埠 3306 上從伺服器遠端登入至遠端伺服器器。如果您無法連線,則遠端伺服器上的資料庫組態不允許遠端連線。或者,遠端伺服器上有防火牆封鎖連線。請聯絡外部資料庫擁有者或支援,以取得允許 Lightsail 執行個體連線的協助。
這是將網站資料庫存放在 Lightsail 受管資料庫中,以達到高可用性和安全性的最佳實務。
資料庫服務關閉
**注意:**以下檔案路徑和命令可能會根據您的 Lightsail WordPress 執行個體是使用 MySQL 還是 MariaDB 而變更。此外,檔案路徑和命令會因執行個體是使用原生 Linux 系統套件 (方法 A),還是獨立安裝 (方法 B) 而有所差異。若要識別資料庫伺服器類型以及要遵循的方法,請執行下列命令:
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A" || echo "Approach B"
test -d /opt/bitnami/mariadb && echo "MariaDB" || echo "MySQL"
1. 如果您確認沒有資料表遭到損壞,並且沒有雲端資料庫連線問題,而 WordPress 仍然無法連線至資料庫,則您的資料庫伺服器可能會關閉。這可能是由於資料庫組態問題、伺服器上的流量過高、磁碟空間不足、可用記憶體不足等所致。使用下列命令檢查資料庫服務狀態:
MySQL 資料庫伺服器
sudo /opt/bitnami/ctlscript.sh status mysql
MariaDB 資料庫伺服器
sudo /opt/bitnami/ctlscript.sh status mariadb
2. 如果上述命令顯示資料庫處於停止狀態,則嘗試使用下列命令來啟動資料庫服務:
MySQL 資料庫伺服器
sudo /opt/bitnami/ctlscript.sh start mysql
MariaDB 資料庫伺服器
sudo /opt/bitnami/ctlscript.sh start mariadb
3. 如果您仍然無法啟動資料庫服務,而且在啟動程序期間看到錯誤,則檢查資料庫服務日誌,以識別根本原因並對問題進行疑難排解。主資料庫服務日誌檔案位於您的 Lightsail WordPress 執行個體中的下列其中一個位置:
遵循方法 A 的 MySQL 資料庫伺服器:/opt/bitnami/mysql/logs/mysqld.log
遵循方法 B 的 MySQL 資料庫伺服器:/opt/bitnami/mysql/data/mysqld.log
遵循方法 A 的 MariaDB 資料庫伺服器:/opt/bitnami/mariadb/logs/mysqld.log
遵循方法 B 的 MariaDB 資料庫伺服器:/opt/bitnami/mariadb/data/mysqld.log
資料庫效能和連線能力可能會受到磁碟空間不足及/或可用記憶體不足的影響。使用 df 和 free 命令來檢查這些資源。
磁碟區空間不足
如果磁碟區上的可用磁碟空間為 100% 或低於 100%,則資料庫服務可能會停止運作。
1. 執行以下命令:
$ sudo df -h
上述命令會列出可用磁碟空間量,如下列範例所示:
Filesystem Size Used Avail Use% Mounted on devtmpfs 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
2. 如果命令輸出顯示您沒有足夠的可用空間,則可以將執行個體大小調整為較大大小。或者,您可以從伺服器刪除不必要的檔案,以建立可用空間。
3. 增加可用磁碟空間之後,重新啟動資料庫服務。
您的 WordPress 設定中的登入憑證不正確
WordPress 需要特定的資料庫連線字串以存取資料庫,其中包括使用者名稱、密碼和主機。如果任何這些項目已變更,則 WordPress 無法存取該資料庫。
1. 若要驗證您是否使用正確的連線字串,請在 wp-config.php 檔案中獲取連線字串詳細資訊 DB_NAME, DB_HOST, DB_USER and DB_PASSWORD。
2. 使用連線字串從終端機存取資料庫。務必用您在步驟 1 中獲取的值取代 DB_NAME、DB_HOST 和 DB_USER。
sudo mysql 'DB_NAME' -h 'DB_HOST' -u 'DB_USER' -p Enter password: ********
**注意:**密碼不會在您輸入時顯示,因此,其他使用者不會看到密碼。
3. 在輸入密碼後按下 ENTER 鍵。
如果您在使用上述命令時收到存取遭拒錯誤,則通常表示憑證不正確。
如果您使用遠端資料庫主機,請在 wp-config.php 檔案中新增正確的連線字串。如果資料庫在同一個伺服器中,則確保 DB_NAME 為 bitnami_wordpress,且 DB_USER 為 bn_wordpress。
若要重設資料庫使用者密碼,請執行下列動作:
1. 使用以下命令來存取 /home/bitnami/bitnami_credentials。記下根資料庫密碼。
sudo cat /home/bitnami/bitnami_credentials
2. 使用以下命令登入 MySQL/MariaDB shell,然後輸入您從前面的命令得到的密碼。如果無法使用資料庫根密碼登入 shell,則重設密碼 (MySQL 或 MariaDB)
sudo mysql -u root -p Enter password: ********
3. 在 MySQL 或 MariaDB shell 中,執行下列查詢,以確定資料庫 bitnami_wordpress 已存在:
show databases;
4. 執行下列查詢,以確定資料庫使用者 bn_wordpress 已存在:
SELECT user FROM mysql.user;
5. 使用下列查詢重設資料庫使用者 "bn_wordpress" 的密碼。
**注意:**用您從 wp-config.php 檔案中獲取的密碼來取代 PASSWORD。
MySQL 資料庫
alter user 'bn_wordpress'@'localhost' identified by 'PASSWORD‘; alter user 'bn_wordpress'@'127.0.0.1' identified by 'PASSWORD‘;
MariaDB 資料庫
alter user 'bn_wordpress'@'%' identified by 'PASSWORD‘;
**注意:**如果上述任何解決方案都不起作用,可以使用備份快照復原執行個體。

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