12

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

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

这是我的流浪文件:

# -*- 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
4

10 回答 10

22

问题是您现在设置的 MySQLmy.cnf只能通过localhostVagrant 服务器进行连接:

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 地址使用——有时它们也被严格设置为localhostor 127.0.0.1

官方 MySQL 文档中所述

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

  • 如果地址为 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。所有不同连接类型的详细信息都显示在官方 Sequel Pro 网站上。但是这个截图很好地总结了它。

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

在此处输入图像描述

对于 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,因此只有在您必须设置为其他任何值时才更改此设置。
于 2014-05-30T16:46:26.553 回答
7

这是我的配置:

在此处输入图像描述

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

于 2015-11-17T15:55:01.027 回答
6

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

$ 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 文件中设置的端口)。

续集专业设置

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

于 2015-04-25T20:59:24.213 回答
2

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

于 2014-09-04T14:59:22.113 回答
2

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

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

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

感谢@hugo 在我如何使用 PuPHPet 续集 Pro?

于 2015-05-28T12:17:32.710 回答
0

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

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

于 2014-12-09T00:21:08.323 回答
0

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

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

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

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

  3. 取消注释主机中的第一个 vagrant box 主机.ssh/known_hosts

所以现在两个流浪盒子(每个都有自己的钥匙)都是已知的。

于 2019-09-13T10:57:56.857 回答
0

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

在此处输入图像描述

于 2015-12-04T11:21:15.093 回答
0

下面是我使用 MAC 的 mysql 工作台连接的 vagrant 的屏幕截图在此处输入图像描述

于 2016-03-28T12:08:18.383 回答
0

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

于 2017-06-15T15:09:56.783 回答