在Compute Engine安裝mariadb後,開啟外部IP連線。
在GCP上安裝mariadb後,依照網路上的各種教學打開了外部連線,所做的設定如下
1.將bind-address = 127.0.0.1 改為 bind-address = 0.0.0.0
2.加入iptables (但後來發現iptables根本沒有啟動)
3.在mysql帳號允許登入的位置設定為%
但不管怎麼設定,都無法透過本機的client軟體連線到資料庫,甚至在遠端主機中,直接使用
mysql -h 外部IP -u username -p
都無法連線,後來突發奇想,把命令改成
mysql -h 內部IP -u username -p
發現居然成功了,這時候似乎找到了方向,就是外部IP無法被連線。
知道原因後就比較簡單處理了,以下是用Navicat的解法:
1.打開連線設定後切換到SSH,勾選使用SSH,IP輸入遠端機器的IP,登入方式就選用平常都入遠端主機的選項。
2.回到一般頁籤,將IP改成127.0.0.1或是localhost,帳密則是SQL帳密。
3.儲存後就可以使用client連線了。
這邊不知道是GCP系統預設還是mariaDB設定的關係,連線一定要透過SSH,一般使用上如果全套都用GCP的話,其他服務使用內部IP就可以正常連線,會比較有問題的就是開發端電腦需要連線時才會碰到這個問題。
先筆記一下解法,之後再研究是不是有不用透過SSH可以直接從外部直接連線的方法。
=====0321更新====
找到方法了,原來是GCP的防火牆擋住了,解法很容易。
到GCP的防火牆設定那邊新增一個規則,如下
目標:所有執行個體
來源篩選器:IP範圍
來源IP範圍:0.0.0.0/0
通訊協定和通訊埠:tcp:3306
這樣就可以直接用IP連DB了。
其實這個方法在GCP的文件中也有提到,只是在規則那邊,文件中是要設定成「指定的目標標記」。
標記名稱則是「mysql-server」,但我照這樣設定還是無效,推測是因為我裝的是mariaDB,所以可能服務名稱略有不同。