我有一个ubuntu 16.04,我从virtualbox运行3个服务器(一个webserver,一个home文件服务器和一个mysql服务器(。
在这个mysql服务器中,我自然有一个内部ip(192.168....(和一个外部ip。
但是,当我尝试使用此虚拟机的外部 IP 从 mysql shell、工作台或 .NET 连接器(例如 mysql -u root -p -h 172.241.442.12(远程连接到此 mysql 服务器时,我总是收到错误:未连接。
我的问题是是否要连接,我必须在路由器(3306(中启用端口转发,就像我在Web服务器中启用80/8080以使其可从Internet访问一样。
我以前从未做过,也没有找到任何清晰的教程。我的主要目的是在 vb.net 应用程序中连接到此数据库。
谢谢!
是的,如果您打算以这种方式访问它,则需要转发端口。您还需要为允许远程访问的用户授予对 MySQL 的访问权限。
GRANT ALL ON somedb.* TO `user`@`123.123.123.123` IDENTIFIED BY 'somePassword'
IP 地址可以是主机名,也可以是%
以匹配所有内容。
也就是说,除非你真的需要与MySQL的永久外部连接,否则你不应该像这样暴露它,更好的选择是通过SSH隧道端口。
ssh -N user@dbserver -L12345:localhost:3306 &
mysql -u root -h localhost -P 12345