【问题标题】:Connect to MySQL on Vagrant instance with Sequel Pro使用 Sequel Pro 连接到 Vagrant 实例上的 MySQL
【发布时间】:2014-07-20 12:00:39
【问题描述】:

我正在 Vagrant 上运行 Laravel,我正在尝试连接 Sequel Pro。

我刚开始使用 Vagrant,我遵循了一些关于连接到 Sequel Pro 的教程,但都没有成功。

这是我的 Vagrant 文件:

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

Vagrant.configure('2') do |config|
config.vm.hostname = 'laravel'
config.vm.boot_timeout = 3600
config.vm.box = 'debian-73-i386-virtualbox-puppet'
config.vm.box_url = 'http://puppet-vagrant-boxes.puppetlabs.com/debian-73-i386-virtualbox-puppet.box'

config.vm.network :forwarded_port, guest: 8000, host: 8000
config.vm.network :forwarded_port, guest: 8500, host: 8500

config.vm.provider :virtualbox do |vb|
vb.customize ['modifyvm', :id, '--memory', '1536']
end

config.vm.provision :puppet do |puppet|
puppet.manifests_path = 'puppet/'
puppet.manifest_file  = 'init.pp'
puppet.module_path    = 'puppet/modules/'
# puppet.options      = '--verbose --debug'
end

end

来自my.cnf:

bind-address            = 127.0.0.1 

这是我的/etc/hosts

127.0.0.1       localhost
127.0.1.1       laravel
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

编辑: 将绑定地址更改为 0.0.0.0 仍然不起作用 在 Sequel Pro 我有

MySQL Host: 0.0.0.0
username: root
Password: (mysql password)
SSH Host 0.0.0.0
SSH User: vagrant
SSH Password: vagrant

编辑: 这是我的流浪主机文件 - etc/hosts

这是我的主机文件

127.0.0.1       localhost
127.0.1.1       laravel
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

【问题讨论】:

  • 您的编辑应该是对我的回答的评论。也就是说,请查看我关于如何在 Sequel Pro 中使用 SSH 隧道的附加​​信息。
  • 另外,您没有连接到0.0.0.0 的MySQL 主机,而是将Vagrant 中的MySQL 配置更改为bind-address = 0.0.0.0。主机应该是您为 Vagrant 使用的主机 IP 地址。
  • 我无法让代码块在评论中工作
  • 很公平。查看我的回答并尝试通过 Sequel Pro 使用 SSH 连接(SSH 隧道)。这可能是您最好的选择。
  • 确保从主机的 known_hosts 文件中删除所有用于同一主机(IP 地址)的公钥。如果您一直在使用另一个具有相同 IP 地址的 Vagrant VM,就会发生这种情况。

标签: mysql vagrant sequelpro


【解决方案1】:

问题是您在my.cnf 中设置的 MySQL 现在只能通过 Vagrant 服务器内的localhost 连接:

bind-address            = 127.0.0.1 

要在 MySQL 中启用网络,您应该将 my.cnf 中的设置更改为:

bind-address            = 0.0.0.0

然后重启 MySQL 服务。不确定在 Vagrant 中会如何发生,但在 Ubuntu 中你会输入这样的命令:

sudo service mysql restart

您可能必须检查您的 MySQL 用户权限,以确保 MySQL 中的用户实际上可以从任何 IP 地址使用(有时它们也严格设置为 localhost 或 127.0.0.1)。

如the official MySQL documentation中所述:

服务器对待不同类型的地址如下:

  • 如果地址为 0.0.0.0,则服务器接受所有服务器主机 IPv4 接口上的 TCP/IP 连接。

  • 如果地址是 ::,则服务器接受所有服务器主机 IPv4 和 IPv6 接口上的 TCP/IP 连接。使用此地址允许两者 所有服务器接口上的 IPv4 和 IPv6 连接。

  • 如果地址是 IPv4 映射地址,则服务器接受该地址的 TCP/IP 连接,采用 IPv4 或 IPv6 格式。为了 例如,如果服务器绑定到 ::ffff:127.0.0.1,客户端可以 使用 --host=127.0.0.1 或 --host=::ffff:127.0.0.1 连接。

  • 如果地址是“常规”IPv4 或 IPv6 地址(例如 127.0.0.1 或 ::1),则服务器仅接受该 IPv4 或 IPv6 地址的 TCP/IP 连接。

也就是说,将 MySQL 或任何数据库服务器暴露给全世界是不可取的。但是在像这样的本地开发的情况下是可以接受的。

因此,如果启用 MySQL 网络不是一个选项,您还可以使用 Sequel Pro 中内置的 SSH 隧道功能通过 SSH 连接到 MySQL。 the official Sequel Pro site here 上显示了所有不同连接类型的详细信息。但是这张截图很好地总结了它。

基本上你只需像往常一样设置你的localhost/127.0.0.1 MySQL 信息。但是您还可以将用于 SSH 的 SSH 信息添加到您的服务器中。 Sequel Pro 将使用该 SSH 连接来无缝连接到 MySQL。这可能是更好的处理方式,而不是处理 MySQL 网络和用户权限问题。

对于 Sequel Pro 中的 SSH 隧道,您只需执行以下操作:

  • 名称:您想要的连接名称。
  • MySQL 主机: MySQL 主机的 IP 地址,应为localhost 或127.0.0.1
  • 用户名: MySQL 数据库用户名。
  • 密码:连接到该 MySQL 数据库用户名的密码。
  • 数据库:可选(您要连接的数据库)
  • 端口:默认为 3306,因此只有在您必须设置为其他任何值时才更改此设置。

现在您在此处为 Vagrant 安装设置 SSH 设置:

  • SSH 主机: Vagrant 机器的主机名或 IP 地址。
  • SSH 用户:该 Vagrant 机器的 SSH 用户名。
  • SSH 密码: 连接到该 SSH 用户的密码。
  • SSH 端口: 默认为 22,因此只有在您必须设置为其他任何值时才更改此设置。

【讨论】:

  • 显示 'root'@'localhost' 的授权; +-------------------------------------------------- -------------------------------------------------- -------------------------------------+ |授予 root@localhost | |将 . 上的所有权限授予由密码“*9F94EDBB4F0262FEA358A0A61F3B5F07FA991E61”标识的“root”@“localhost”,带有授予选项 | | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
  • 我正在尝试使用 SSH,但我似乎无法找到问题所在。
  • 问题是您的授权与本地主机相关联。您需要将其更改为可能是通配符 *.或者更好的是在 Sequel Pro 中使用 SSH 隧道,正如我在最后解释的那样。
  • @JakeGould 很棒的答案!谢谢。
  • 拍了几张照片来克服自己的精神无能,但这绝对是对我有用的答案。谢谢!!
【解决方案2】:

这是我的配置:

vagrant机器默认的ssh用户和ssh密码都是vagrant。

【讨论】:

  • 在我的情况下工作 SSH 用户:root,SSH 密码:vagrant
【解决方案3】:

您需要做的就是编辑位于此处的绑定地址:

$ sudo nano /etc/mysql/my.cnf

找到将设置为 127.0.0.0 的 bind_address 设置并将其更改为 0.0.0.0

之后重启mySQL:

$ sudo service mysql restart

最后一步就是更新权限:

$ mysql -u root -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES;"

然后像往常一样连接(将端口更改为您在 vagrant 文件中设置的端口)。

请注意这里存在安全问题,因为它非常开放,但对于开发工作来说没问题。

【讨论】:

    【解决方案4】:

    试试https://github.com/AlexDisler/mysql-vagrant,它可以让您在没有 ssh 隧道的情况下进行连接(查看 install.sh 了解具体设置)。

    【讨论】:

    • 甜蜜!我是 vagrant 的新手,很惊讶在 Vagrant Cloud 中找不到像这样简单的“一次性”流浪者......谢谢!
    【解决方案5】:

    在我尝试过之前,上述所有答案都对我不起作用:

    • 使用vagrant ssh连接到你的vagrant实例
    • 只需键入passwd 即可设置新密码。使用密码vagrant 以保持一致性。

    采取这些步骤后,它将很容易连接。

    感谢@hugo How do I Sequel Pro with PuPHPet?

    【讨论】:

      【解决方案6】:

      关于绑定地址的答案是正确的,但是我发现与其将值更改为 0.0.0.0,不如直接编辑 my.cnf 文件并完全注释掉绑定地址。

      如果您这样做,然后按照原始答案的其余部分进行操作,您应该可以通过 sequel pro 进行连接

      【讨论】:

        【解决方案7】:

        对我来说,最重要的部分是使用 0.0.0.0 作为 MySQL 主机而不是 127.0.0.1。其他一切都照常进行(使用 SSH)。这对我有用:

        【讨论】:

          【解决方案8】:

          以下是我使用 MAC 的 mysql 工作台连接的 vagrant 的屏幕截图

          【讨论】:

            【解决方案9】:

            您必须通过 SSH 连接到您的 Vagrant box。所以如果你之前已经连接过,并且对你的 Vagrant box 进行了任何重大更改(例如销毁/重建),你可能有一个新的私钥,需要刷新你在~/.ssh/known_hosts 中的 IP 地址记录。为此,请在 vim 中打开文件,然后删除以您的 vagrant box IP 地址开头的行。

            【讨论】:

              【解决方案10】:

              可以使用vagrant port 来检查当前的端口转发(如果一个有多个 vagrant 框)。

              此外,如果案例不止一个 vagrant box,问题可能是必须通过以下方式将新的 ssh 密钥添加到主机的.ssh/known_hosts:

              1. 在主机.ssh/known_hosts评论第一个流浪盒子主机;

              2. 通过 Sequel Pro 测试连接对话框添加第二个 vagrant box 主机;

              3. 取消注释主机.ssh/known_hosts 中的first vagrant box主机。

              所以现在两个 vagrant box(每个都有自己的密钥)都是已知的。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-05-19
                • 2018-12-13
                • 2021-01-08
                • 1970-01-01
                • 2021-11-23
                • 1970-01-01
                相关资源
                最近更新 更多