[筆記] Compute Engine自行安裝maraiadb開啟外部連線的方式

在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,所以可能服務名稱略有不同。