使用Sequel Pro连接到Vagrant实例上的MySQL

时间:2014-05-30 16:38:49

标签: mysql vagrant sequelpro

我在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

编辑: 这是我的vagrant hosts文件 - 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

10 个答案:

答案 0 :(得分:21)

问题是,你在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用户权限,以确保可以从任何IP地址实际使用MySQL中的用户 - 有时它们也严格设置为localhost127.0.0.1。 / p>

the official MySQL documentation中所述:

  

服务器按如下方式处理不同类型的地址:

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

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

  •   
  • 如果地址是IPv4映射地址,则服务器接受IPv4或IPv6格式的该地址的TCP / IP连接。对于   例如,如果服务器绑定到:: 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连接。

    < / LI>   

也就是说,向世界公开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网络和用户权限问题。

enter image description here

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

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

现在,您可以在此处设置Vagrant安装的SSH设置:

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

答案 1 :(得分:6)

这是我的移民:

enter image description here

Vagrant机器默认 ssh用户 ssh密码都是 vagrant

答案 2 :(得分:5)

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

$ sudo service mysql restart

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

之后重启mySQL:

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

最后一步只是更新权限:

{{1}}

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

sequel pro settings

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

在我尝试这个之前,以上所有答案都不适合我:

  • 使用vagrant ssh
  • 连接到您的流浪者实例
  • 只需输入passwd即可设置新密码。使用密码vagrant来保持一致性。

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

感谢How do I Sequel Pro with PuPHPet?

的@hugo

答案 5 :(得分:0)

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

如果你这样做,然后按照原来的答案的其余部分,你应该能够通过续集专业人士

答案 6 :(得分:0)

对我来说,关键部分是使用0.0.0.0作为MySQL主机而不是127.0.0.1。其他一切照常营业(使用SSH)。这对我有用:

enter image description here

答案 7 :(得分:0)

以下是我使用来自MAC enter image description here

的mysql工作台连接的vagrant连接的屏幕截图

答案 8 :(得分:0)

您与Vagrant盒子的连接必须通过SSH进行。因此,如果您之前已连接并对Vagrant框进行了任何重大更改(例如销毁/重建),则可能需要新的私钥并需要在~/.ssh/known_hosts中刷新您的IP地址记录。为此,请在vim中打开文件,然后删除以您的流浪盒IP地址开头的行。

答案 9 :(得分:0)

一个人可以使用vagrant port来检查当前的端口转发(如果一个人有多个无用信息的盒子)。

如果情况不止一个流浪者箱,那么问题可能是必须通过以下方式将新的ssh密钥添加到主机的.ssh/known_hosts

  1. 在主机的.ssh/known_hosts中注释第一批无聊的盒子主机

  2. 通过Sequel Pro测试连接对话框添加第二个无所事事的盒子主机

  3. 取消注释主机的.ssh/known_hosts中的第一批无聊的盒子主机

所以现在知道了两个无用的盒子(每个都有它自己的钥匙)。