我在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
答案 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中的用户 - 有时它们也严格设置为localhost
或127.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网络和用户权限问题。
对于Sequel Pro中的SSH隧道,您只需执行以下操作:
localhost
或127.0.0.1
现在,您可以在此处设置Vagrant安装的SSH设置:
答案 1 :(得分:6)
答案 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文件中设置的内容)。
请注意,这里存在安全问题,因为它们都非常开放,但对于开发工作来说还不错。
答案 3 :(得分:2)
尝试https://github.com/AlexDisler/mysql-vagrant,它允许您在没有ssh隧道的情况下进行连接(请查看install.sh以了解具体设置)。
答案 4 :(得分:2)
在我尝试这个之前,以上所有答案都不适合我:
vagrant ssh
passwd
即可设置新密码。使用密码vagrant
来保持一致性。在采取这些步骤后,它将很容易连接。
的@hugo答案 5 :(得分:0)
关于绑定地址的答案是正确的,但我发现不是将值更改为0.0.0.0,而是编辑my.cnf文件并完全注释掉绑定地址。
如果你这样做,然后按照原来的答案的其余部分,你应该能够通过续集专业人士
答案 6 :(得分:0)
答案 7 :(得分:0)
答案 8 :(得分:0)
您与Vagrant盒子的连接必须通过SSH进行。因此,如果您之前已连接并对Vagrant框进行了任何重大更改(例如销毁/重建),则可能需要新的私钥并需要在~/.ssh/known_hosts
中刷新您的IP地址记录。为此,请在vim中打开文件,然后删除以您的流浪盒IP地址开头的行。
答案 9 :(得分:0)
一个人可以使用vagrant port
来检查当前的端口转发(如果一个人有多个无用信息的盒子)。
如果情况不止一个流浪者箱,那么问题可能是必须通过以下方式将新的ssh密钥添加到主机的.ssh/known_hosts
:
在主机的.ssh/known_hosts
中注释第一批无聊的盒子主机;
通过Sequel Pro测试连接对话框添加第二个无所事事的盒子主机;
取消注释主机的.ssh/known_hosts
中的第一批无聊的盒子主机。
所以现在知道了两个无用的盒子(每个都有它自己的钥匙)。