學習動機
phpMyAdmin 是一個以 PHP 為基礎的 MySQL 管理工具。
因為我們的 WordPress 是使用 Bitnami 打包好的套件,套件使用 phpMyAdmin 管理 WordPress 所用到的資料庫,因此需要學習如何使用 phpMyAdmin 提供的網頁介面管理資料庫。
方法
因為安全性的原因,進入 phpMyAdmin 時的 hostname 必須是 127.0.0.1。因為我們要從自己的電腦進行操作,直接在瀏覽器輸入 127.0.0.1 是無法連過去的,所以必須藉由 SSH tunnel 的方式做到,它的原理是:
使用 OpenSSH 在本地端開一個 port,並且將進入這個 port 的流量導向 phpMyAdmin 所在的機器,也就是架設 WordPress 的 VM instance
流程如下(以 MacOS 為例):
產生 SSH 使用的 Private 與 Public Keys
我一開始是參考 Creating a new SSH key 這篇文章,但發現一直遇到 Permission denied (publickey) 的錯誤訊息。
後來發現直接到 GCP Console > Compute Engine > VM Instances,在想要連線的機器上選擇 SSH 旁邊的三角形 > View gcloud command,複製 command 到 local terminal 執行即可,產生的 keys 會放在 ~/.ssh/ 底下。
細節可以參考 Connecting to Linux Instances 這篇文章。
對了,這個方法需要先安裝 gcloud,安裝方法請參考 Installing Google Cloud SDK。
建立 SSH tunnel
使用以下指令監聽 127.0.0.1 的 8888 port,並且將流量導向 VM instance:
ssh -L 8888:localhost:80 -l [USERNAME] [VM_IP] -i [SSH_PRIVATE_KEY] -N
-L 8888:127.0.0.1:80 | 指令的原型是 -L port:host:hostport 8888 是本地電腦監聽的 port 127.0.0.1 是目的地的網址,因為我們希望連向 VM instance 的 127.0.0.1 80 是目的地的 port,文件說如果有在 VM instance 上將 HTTP 導向 HTTPS,需要將 80 換為 443,但是我實際上這麼做的話會得到 NGINX 回報: 400 Bad Request 原因需要再確認 指令說明 |
-l [USERNAME] | VM instance 的 username 指令說明 |
[VM_IP] | VM instance 的 publice IP address |
-i [SSH_PRIVATE_KEY] | SSH 的 private key 指令說明 |
-N | 不要執行使用 SSH 連向遠端的動作,當只要開 SSH tunnel 時可以使用 指令說明 |
執行以上指令後,如果沒有出現錯誤訊息,則代表 SSH tunnel 已建立。
連線 phpMyAdmin
在瀏覽器上輸入 127.0.0.1:8888/phpmyadmin,即可開啟位於 VM instance 的 phpMyAdmin 網頁管理畫面。
比較特別的是我在瀏覽器上輸入上述網址時,瀏覽器會先幫我開啟 ,127.0.0.1/phpmyadmin 的網頁,並且回報說:
無法連上這個網站
127.0.0.1 拒絕連線
ERR_CONNECTION_REFUSED
需要在網址的地方再次手動輸入 :8888 並按下 Enter 才行,原因需要再確認。
References
Bitnami 的說明文件:Connect To PHPMyAdmin
發佈留言