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

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

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

我正在使用 root 用户,是的,我知道这不是最安全的,但对于我的测试来说它是没问题的。

网络上有大量关于此问题的信息,但我读到的所有资料对我都没有用。

在安装 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

我正在将 ifconfig 下看到的 inet ip 地址输入到 mysql workbench 中。

我做错什么了吗?或者我错过了什么步骤吗?

我收到错误消息“长时间暂停后无法连接到 mysql 数据库(10060)”。

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

答案1

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

尝试一下nc -v mysqlserver_ip_address 3306。它应该显示“Ncat:已连接到...”。如果显示,则表示您有一个 TCP 连接,因此问题出在 mysql 或工作台上。如果它显示其他内容,则表示网络设备已损坏或服务器未监听该端口。

我怀疑防火墙丢掉了你的数据包。长时间的停顿通常表示数据包被丢掉,而不是拒绝连接。如果你连接到一个没有防火墙但未开放的端口,服务器会很快向你发送拒绝信息。绝大多数情况下,如果连接超时,那是因为某些东西将数据包丢在了地上,而不是礼貌地拒绝它们(在与扫描你机器的人打交道时,礼貌是非常愚蠢的)。这是防火墙经常做的事情。所以,这很可能是防火墙的问题。

您说您运行了iptables -A ....,这会将新行放在规则的末尾,这意味着它可能不会被使用,因为在添加该规则之前,末尾可能有一个默认的 -j DROP 规则。此外,iptables-save 应该只将配置打印到 stdout,而不是实际将防火墙配置保存在正确的位置。

尝试iptables -L查看顺序是否错误。如果是,您可以尝试一下-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

答案2

这些命令有效!

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

相关内容