无法连接到在Fedora 25上运行的虚拟mySQL服务器

尝试在mySQL工作台上连接到我的虚拟MySQL服务器(VirtualBox Fedora 25)。

我正在使用root用户,是的,我知道这不是最安全的,但对于我的testing,这是好的。

网上有很多关于这方面的信息,但是我读的所有东西都不适合我。

在安装mySQL期间,我允许远程连接到root用户。

所以我已经授予root用户所有权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my_password'; 

之后,我冲洗了PRIVILEGES

我给我加了一条线

 # vi /etc/my.cnf bind-address=0.0.0.0 

我也开了一个端口

 shell> iptables -A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 3306 -j ACCEPT shell> iptables-save 

我正在键入inet ip地址,我看到在ifconfig下mysql工作台。

我做错了什么? 还是我错过了一个步骤?

我得到错误说“长时间暂停后无法连接到MySQL数据库(10060)。

虚拟服务器上的IP地址与连接设备路由器pipe理页面上的“未知”列表相同。

“无法连接到mysql数据库(10060)”表示这不是一个身份validation问题。

试试nc -v mysqlserver_ip_address 3306 。 它应该说'Ncat:连接到…'如果是这样,这意味着你有一个TCP连接,所以问题是在MySQL或工作台。 如果有其他说明,则networking内容被破坏或者服务器没有在该端口上侦听。

我怀疑你有一个防火墙丢弃你的数据包。 长时间的停顿通常表示被丢弃的数据包,而不是被拒绝的连接。 如果您连接到非防火墙但未打开的端口,则服务器将很快向您发送拒绝。 绝大多数情况下,如果连接超时,是因为有些东西将数据包丢在地板上,而不是礼貌地拒绝它们(当处理人们的端口扫描你的盒子时,礼貌是相当愚蠢的)。 这是防火墙经常做的事情。 所以,这很可能是防火墙的事情。

你说你运行iptables -A .... ,这会把你的新行放在规则的末尾,这意味着它可能不会被使用,因为可能有一个默认的-j DROP规则,添加了该规则。 此外,iptables的保存应该只是打印出的configuration标准输出,而不是实际保存防火墙configuration在正确的地方。

尝试iptables -L来查看是否sorting错误。 如果是这样,你可以玩-I 。 更简单的方法是做iptables-save > some_temp_file ,然后编辑some_temp_file,然后运行iptables-restore < some_temp_file

如果按照自己想要的方式使防火墙工作,请执行iptables-save > /etc/wherever_it_goes 。 在Fedora / Redhat / Centos上,这将是iptables save > /etc/sysconfig/iptables

这些命令工作!

 firewall-cmd --permanent --add-service=mysql firewall-cmd --reload