2017-08-28 101 views
0

我有一個Ubuntu的16.04,我從virtualbox(一個網絡服務器,一個家庭文件服務器和一臺MySQL服務器)運行3臺服務器。港口fowarding爲MySQL服務器的Ubuntu的遠程連接

在這個MySQL服務器,我自然有一個內部IP(192.168 ....)和一個外部的。

但是,當我嘗試使用該虛擬機的外部IP從mysql shell,workbench或.NET連接器(例如。mysql -u root -p -h 172.241.442.12)遠程連接到此mysql服務器時,錯誤:未連接。

我的問題是是否連接我必須在我的路由器(3306)中啓用端口轉發,就像我將在網絡服務器中啓用80/8080以使其可以從互聯網訪問一樣。

我從來沒有做過,也沒有找到任何明確的教程。我的主要目的是在vb.net應用程序中連接到這個數據庫。

謝謝!

回答

0

是的,如果你打算以這種方式訪問​​它,你將需要轉發一個端口。您還需要爲允許遠程訪問的用戶授予對MySQL的訪問權限。

GRANT ALL ON somedb.* TO `user`@`123.123.123.123` IDENTIFIED BY 'somePassword' 

的IP地址可以是主機名或%匹配一切。

也就是說,除非你真的需要一個與MySQL永久的外部連接,否則你不應該這樣暴露它,更好的選擇是通過SSH隧道端口。

ssh -N [email protected] -L12345:localhost:3306 & 
mysql -u root -h localhost -P 12345 
+0

謝謝!但是,端口是否可以通過終端或使用路由器的端口來完成?另外,我是否需要在ubuntu mysql服務器中設置靜態IP?再次感謝您的幫助。 –

+0

@HenriqueMuzzi服務器應該有一個靜態IP和是的,端口轉發是通過路由器。但是,如果您通過SSH進行隧道連接,則不需要轉發mysql端口。 – HostFission