无法使用 HeidiSQL 连接到 Vagrant:"Can't connect to MySQL server on 'localhost'"

Can't connect to Vagrant using HeidiSQL: "Can't connect to MySQL server on 'localhost'"

我正在使用 Scotch Box,一个很棒的 Vagrant LAMP 堆栈。

我能够在不到 5 分钟的时间内在我的 Macbook 上设置所有内容,但我在 Windows 机器上运行时遇到问题。

当我尝试使用 HeidiSQL 客户端连接到 vagrant 数据库时,收到以下错误:

以下是我的连接设置:

我还在 SSH 隧道选项卡上尝试了端口 22,并且我仔细检查了我的密码:

MySQL: root/root

流浪汉: vagrant/vagrant

我已经确认 MySQL 服务是 运行,当我 ssh 进入 Vagrant 实例时,我可以通过命令行连接到 MySQL。

知道为什么这对我来说不是开箱即用的吗?

谢谢!

编辑:

如果对您有帮助,这里是Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  config.vm.box = "scotch/box"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.hostname = "scotchbox"
  config.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", "fmode=666"]

end

这似乎是我使用的 HeidiSQL 版本的问题。升级到 HeidiSQL 9.1 允许我连接。

我在 HeidiSQL 9.3 中仍然遇到这个问题。我发现暂停并重新加载 vagrant box 可以让它消失。

在 Ubuntu(使用 wine)上遇到了类似的问题。问题是我们将 IP 用于从“192.”开始的流浪虚拟机。 解决简单地在主机文件上添加主机为“192.bla.bla.bla bla.com”并在 HeidiSQL "SSH tunnel" 页面中使用域 "bla.com" 而不是 IP.

虽然我没有通过 MYSQL (TCP/IP) 设置连接,但我找到了解决问题的方法。

你需要通过MYSQL(ssh隧道)连接,输入相应的密码,用plink连接(你会在HeidiSQL本身找到link)和set plink timeout to number >10-20.

使用 9.3 build 5901 对其进行了测试。

scotchbox issue on github中也提到了这个解决方案。

我忽略的一件事是,SSH 隧道选项卡下的 "local port" 也是必需的。总而言之,需要设置三个关键端口。

如果你的 Vagrantfile 看起来像这样:

Vagrant.configure("2") do |config|
    config.vm.network "forwarded_port", guest: 3306, host: 3310
    config.vm.network "private_network", ip: "192.168.100.11"
end

并且 Vagrant 自动将 SSH 端口 (22) 转发到 2222(您可以通过 vagrant ssh-config 进行检查,然后 HeidiSQL 配置应如下所示:

由于新的 Vagrant 版本使用自定义生成的 SSH 密钥,您将需要它而不是 vagrant/vagrant user/pw 组合。密钥可以在 project location\.vagrant\machines\default\virtualbox.

中找到

这是从 Windows 10 上的 HeidiSQL 9.4.0.5130(64 位)开始的。