从VM打开远程MySQL的端口3306

我的笔记本电脑上有一台CentOS虚拟机,运行一台主机和一个NAT适配器。

我正在寻找连接到Bluehost服务器上的外部MySQL数据库。 根据Bluehost 3306端口是打开的。

当我跑步

nmap -v -sV localhost -p 3306 

在我的VM上,它发现127.0.0.1上的开放端口3306 / tcp。

我不确定我是否需要127.0.0.1上的端口,因为我的IP是192.168.56.101? 不知道如何进一步configuration。 提前致谢。


在iptables中,我添加了这两行:

 -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --sport 3306 -j ACCEPT 

不知道这是一个目的地或来源或两者? 这是甚至INPUT?

您将需要授予权限以允许用户远程连接以及更改/etc/mysql/my.cnf中的绑定地址:

 bind-address = 127.0.0.1 

将其更改为:

 bind-address = 0.0.0.0 

重启你的mysql服务器

 /etc/init.d/mysql restart 

0.0.0.0表示你将听所有的接口。

现在授予用户远程连接权限:

 GRANT ALL PRIVILEGES ON DATABASE.* TO 'user'@'%' IDENTIFIED BY "pass"; 

%意味着从任何IP,如果你只想让这个为某个IP,用IPreplace%。

如果您能够看到远程服务器端口3306从您的虚拟机打开,那么这听起来像是一个MySQLconfiguration问题。 您的其他服务器上的MySQL实例可能会拒绝您的连接,因为它不是本地连接。 这是MySQL的开箱即用行为; 它不会接受远程连接。

如果要启用远程连接,请尝试从MySQL实例中发出以下命令:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'yourUsername@xxx.yyy.zzz.aaa' IDENTIFIED BY "pass";

这将允许用户,yourUsername从IP地址xxx.yyy.zzz.aaa连接到MySQL服务器。