繁体   English   中英

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

[英]Connect to MySQL on Vagrant instance with Sequel Pro

我在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仍然不起作用在续集专业我有

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

问题是你在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地址实际使用 - 有时它们严格设置为localhost127.0.0.1

正如MySQL官方文档中所述

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

  • 如果地址为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连接。

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

因此,如果无法启用MySQL网络,您还可以使用Sequel Pro中内置的SSH隧道功能通过SSH连接到MySQL。 有关所有不同连接类型的详细信息,请参见官方Sequel Pro网站 但是这个截图总结得很好。

基本上你只需像往常一样设置localhost / 127.0.0.1 MySQL信息。 但是,您还要将用于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,因此只有在您必须设置为其他任何内容时才更改此设置。

这是我的同意:

在此输入图像描述

流浪汉机器默认的ssh用户ssh密码都是流浪汉

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

$ sudo nano /etc/mysql/my.cnf

找到bind_address设置,该设置将设置为127.0.0.0并将其更改为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文​​件中设置的内容)。

续集专业设置

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

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

在我尝试这个之前,以上所有答案对我都不起作用:

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

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

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

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

如果您这样做,然后按照原始答案的其余部分,您应该能够通过续集专业版连接

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

在此输入图像描述

下面是我使用MAC的mysql workbench连接vagrant的截图 在此输入图像描述

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM