尝试连接到 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