我的笔记本电脑上有一个 CentOS VM,运行仅主机和 NAT 适配器。
我想连接到 Bluehost 服务器上的外部 MySQL 数据库。根据 Bluehost 的说法,端口 3306 已打开。
当我跑步时
nmap -v -sV localhost -p 3306
在我的虚拟机上,它发现 127.0.0.1 上开放了端口 3306/tcp。
由于我的 IP 是 192.168.56.101,我不确定是否要将端口设置为 127.0.0.1?不确定如何进一步配置。提前致谢。
在 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
不确定这是目的地还是源头,或者两者兼而有之?!这甚至是输入吗?
答案1
您需要授予权限以允许用户远程连接以及更改 /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,请将 % 替换为该 IP。
答案2
如果您能够从虚拟机看到远程服务器端口 3306 已打开,那么这听起来像是 MySQL 配置问题。另一台服务器上的 MySQL 实例可能拒绝您的连接,因为它不是本地连接。这是 MySQL 的开箱即用行为;它不会接受远程连接。
如果您想启用远程连接,请尝试从 MySQL 实例发出以下命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO '[email protected]' IDENTIFIED BY "pass";
这将允许用户 yourUsername 从 IP 地址 xxx.yyy.zzz.aaa 连接到 MySQL 服务器。