忘記管理員密碼怎麼辦?在資料庫中建立新的管理員 - Part 1

WordPress, Troubleshooting

WordPress restore admin user password

四月初網站上線後開開心心去度假,五月收到回報需要對網站作修正時才發現管理員密碼不知所蹤。

這問題在網路上已經有許多的分享,解決方案為直接在 MySQL 資料庫內建立新的管理員。但若是單純使用 Lightsail Instance ,似乎是無法直接存取 Database 。要怎麼建立新的管理員呢?作成 Lightsail Database並完成設置、將WordPress MySQL Database 輸入到新的資料庫進行連結。完成後就能從 Lightsail Database 存取資料庫、建立新的管理員。

註:如果有比以下更好的解法請一定要跟我分享

 


 

Lightsail Database 的建置和輸入準備 #

WordPress restore admin user password

進入 Lightsail Console 後選擇 Database 的分頁並選擇建立新的 MySQL 資料庫,如果網站資料庫沒有特殊需求,選擇最簡單的方案即可。建置好的資料庫需要開啟「輸入模式 Import Mode」和「公開模式 Public Mode」,原先設置好的 Lightsail Instance 才能夠對資料庫進行存取。在輸入資料時會將這兩個模式開啟,在完成輸入之後千萬要記得將這兩個模式確實關閉,避免被不明人士直接存取我們的資料庫。

完成建置的 Lightsail Database 有許多設定,在 Connect 分頁能找到「Data Import Mode」的按鈕、預設為 Disable,點選按鈕之後可以開啟「輸入模式」。最後到 Network 分頁能找到「Public Mode」的按鈕、預設同樣為 Disable,點選按鈕後啟用、讓 Lightsail Database 能從外部存取。

WordPress restore admin user password WordPress restore admin user password

至此我們已經完成 Lightsail Database 的設定,接下來需要 SSH 進入 WordPress 網站使用的 Lightsail Instance、將內部資料庫的內容輸出,透過剛剛開啟的 Public Mode 和 Import Mode 把資料輸入到新建立的 Lightsail Database 上。

 


 

將 WordPress MySQL 資料庫輸入到 Lightsail Database #

WordPress restore admin user password

在 SSH 進入 WordPress 網站使用的 Lightsail Instance 前,可以記下 Lightsail Database 的 username 和 endpoint 訊息供後續使用。SSH 後使用 mysqldump 指令來將 bitnami_wordpress 資料庫的內容壓縮後進行一次性傳輸到新建立的 Lightsail mysql 資料庫中。

WordPress restore admin user password


sudo mysqldump -u root --databases bitnami_wordpress --single-transaction --compress --order-by-primary -p$(cat /home/bitnami/bitnami_application_password) | sudo mysql -u DbUserName --host DbEndpoint --password

指令中有幾個要注意的部分:

sudo mysql -u DbUserName –host DbEndpoint –password 的部分是指向我們新建的 Lightsail Database ,因此要將 DbUserName 和 DbEndpoint 變更為剛剛記下的 database username 和 endpoint 訊息。

修正並輸入指令後,會要求輸入新建 MySQL 資料庫密碼,同樣也能在 Lightsail Database 的頁面中找到。

如此便成功的將 WordPress binami 資料庫輸出到 Lightsail Database 。

 


 

變更 WordPress 設定直接讀取 Lightsail Database 資料庫 #

WordPress restore admin user password

截至目前為止的設定都是將現有的資料複製到新的資料庫中,若現在在 WordPress 後台進行更新,所做的變更依舊是在 Lightsail Instance 的資料庫中。這時候就需要變更 wp-config.php 的設置,讓網站和 Lightsail Database 資料庫做直接溝通。


cp /opt/bitnami/wordpress/wp-config.php /opt/bitnami/wordpress/wp-config.php-backup

在進行變更前用 cp 指令複製 wp-config.php 以防萬一。


nano /opt/bitnami/wordpress/wp-config.php

用內建的文字編輯器 nano 編輯 wp-config.php ,使用 CTRL + W 搜尋 DB_USER、DB_PASSWORD和DB_HOST。

將 DB_USER 變更為 Lightsail Database 的dbmasteruser; DB_PASSWORD為剛剛有使用到的密碼; DB_HOST則是剛剛使用的 endpoint 後面加上 port number 埠號 :3306 。

使用 CTRL+X 來關閉 nano 編輯器,選擇 Y 來儲存變更。

完成上述後需要重新啟動 Lightsail Instance 來使用變更後的設定。


sudo /opt/bitnami/ctlscript.sh restart