Подключитесь к MySQL на экземпляре Vagrant с помощью Sequel Pro

Я запускаю Laravel на Vagrant и пытаюсь подключить 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

Это мой файл 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

person user3692109    schedule 30.05.2014    source источник
comment
Ваше редактирование должно быть комментарием к моему ответу. Тем не менее, проверьте мою дополнительную информацию о том, как вы можете использовать туннелирование SSH в Sequel Pro.   -  person Giacomo1968    schedule 30.05.2014
comment
Кроме того, вы не подключаетесь к хосту MySQL 0.0.0.0, а меняете конфигурацию MySQL в Vagrant, чтобы иметь bind-address = 0.0.0.0. Хост должен быть любым IP-адресом хоста, который у вас есть для Vagrant.   -  person Giacomo1968    schedule 30.05.2014
comment
Я не мог заставить блоки кода работать в комментарии   -  person user3692109    schedule 30.05.2014
comment
Справедливо. Посмотрите на мой ответ и попробуйте использовать SSH-соединение (SSH-туннелирование) через Sequel Pro. Это может быть ваш лучший вариант.   -  person Giacomo1968    schedule 30.05.2014
comment
Убедитесь, что вы удалили все открытые ключи из файла known_hosts вашего хост-компьютера, которые относятся к тому же хосту (IP-адресу). Это произойдет, если вы использовали другую виртуальную машину Vagrant с тем же IP-адресом.   -  person Jon Hudson    schedule 09.04.2015


Ответы (10)


Проблема в том, что MySQL, как вы его настроили в my.cnf, теперь может подключаться только через localhost на сервере Vagrant:

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).

Как поясняется в официальной документации MySQL:

Сервер обрабатывает различные типы адресов следующим образом:

  • Если адрес равен 0.0.0.0, сервер принимает соединения TCP/IP на всех интерфейсах IPv4 узла сервера.

  • Если адрес ::, сервер принимает соединения TCP/IP на всех интерфейсах хоста сервера IPv4 и IPv6. Используйте этот адрес, чтобы разрешить соединения 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), сервер принимает соединения TCP/IP только для этого адреса IPv4 или IPv6.

Тем не менее, выставлять MySQL или любой другой сервер базы данных на всеобщее обозрение нецелесообразно. Но приемлемо в случае такой локальной разработки.

Поэтому, если включение сети MySQL не вариант, вы также можете использовать встроенные возможности туннелирования SSH в Sequel Pro для подключения к MySQL через SSH. Подробная информация обо всех различных типах подключения представлена ​​на официальном Сайт Sequel Pro здесь. Но этот скриншот хорошо подводит итог.

По сути, вы просто устанавливаете информацию о localhost/127.0.0.1 MySQL, как обычно. Но вы также добавляете информацию SSH, которую вы будете использовать для SSH, на свой сервер. И Sequel Pro будет использовать это SSH-соединение для беспрепятственного туннелирования и подключения к MySQL. Это может быть лучшим способом справиться с проблемами с сетью MySQL и разрешениями пользователей.

введите здесь описание изображения

Для туннелирования SSH в Sequel Pro вам просто нужно сделать следующее:

  • Имя: имя, которое вы хотите для подключения.
  • Хост MySQL: IP-адрес хоста MySQL, который должен быть localhost или 127.0.0.1.
  • Имя пользователя: имя пользователя базы данных MySQL.
  • Пароль. Пароль, связанный с этим именем пользователя базы данных MySQL.
  • База данных: необязательно (база данных, к которой вы хотите подключиться)
  • Порт: по умолчанию — 3306, поэтому меняйте его только в том случае, если вам определенно нужно установить что-то еще.

Теперь здесь вы устанавливаете настройки SSH для установки Vagrant:

  • SSH Host: имя хоста или IP-адрес вашего компьютера Vagrant.
  • Пользователь SSH: имя пользователя SSH для этой машины Vagrant.
  • Пароль SSH: пароль, подключенный к этому пользователю SSH.
  • Порт SSH: по умолчанию — 22, поэтому меняйте его только в том случае, если вам определенно нужно установить что-то еще.
person Giacomo1968    schedule 30.05.2014
comment
ПОКАЗАТЬ ГРАНТЫ ДЛЯ 'root'@'localhost'; +------------------------------------------------- -------------------------------------------------- -------------------------------------+ | Гранты для root@localhost | | ПРЕДОСТАВЬТЕ ВСЕ ПРИВИЛЕГИИ НА . 'root'@'localhost', ОПРЕДЕЛЕННОМУ ПАРОЛЕМ '*9F94EDBB4F0262FEA358A0A61F3B5F07FA991E61', С ОПЦИЕЙ ПРЕДОСТАВЛЕНИЯ | | ПРЕДОСТАВИТЬ ПРОКСИ НА ''@'' ДЛЯ 'root'@'localhost' С ОПЦИЕЙ ПРЕДОСТАВЛЕНИЯ - person user3692109; 30.05.2014
comment
Я пытаюсь сделать это с SSH, я просто не могу найти, что не так. - person user3692109; 30.05.2014
comment
Проблема в том, что ваши гранты привязаны к локальному хосту. Вам нужно изменить это, чтобы, возможно, это был подстановочный знак *. Или, что еще лучше, просто используйте туннелирование SSH в Sequel Pro, как я объясню в конце, если ответ. - person Giacomo1968; 30.05.2014
comment
Я пытаюсь использовать туннелирование SSH со вчерашнего дня. Кажется, я не могу понять, что не так. - person user3692109; 31.05.2014
comment
@user3692109 user3692109 Проверьте мои последние изменения с подробностями туннелирования SSH. Кажется, вы не понимаете разницы между соединением Vagrant и соединением MySQL. Ваше соединение с MySQL будет localhost или 127.0.0.1. И IP-адрес Vagrant — это адрес вашей машины Vagrant с вашего рабочего стола. Это 100% никогда не будет 0.0.0.0. Это используется только в my.cnf для включения сети. - person Giacomo1968; 31.05.2014
comment
@user3692109 user3692109 Тем не менее, это лучшее, чем я могу вам помочь. Все ответы здесь. Вам просто нужно сгладить ваши имена хостов и IP-адреса с соответствующими учетными данными. - person Giacomo1968; 31.05.2014
comment
Спасибо за помощь, как вы думаете, проблема может быть в том, что я запускаю три бродячих виртуальных ящика на локальном хосте? - person user3692109; 31.05.2014
comment
@user3692109 user3692109 Позвольте мне пояснить: «Тем не менее, это лучшее, чем я могу вам помочь». До свидания. - person Giacomo1968; 31.05.2014
comment
@JakeGould Отличный ответ! Спасибо. - person Shaun Scovil; 13.09.2014
comment
Мне потребовалось несколько попыток, чтобы преодолеть собственную умственную несостоятельность, но этот ответ определенно сработал для меня. Спасибо!! - person MacSalty; 06.04.2015

это моя конфигурация:

введите описание изображения здесь

По умолчанию для бродячих машин пользователь ssh и пароль ssh являются бродячими.

person pangpang    schedule 17.11.2015
comment
В моем случае работает SSH User: root, SSH Password: vagrant - person German Khokhlov; 26.10.2017

Все, что вам нужно сделать, это отредактировать адрес привязки, расположенный здесь:

$ 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;"

Затем подключитесь, как обычно (изменив порт на тот, который вы когда-либо устанавливали в своем бродячем файле).

настройки продолжения

Обратите внимание, что здесь есть проблемы с безопасностью, поскольку все довольно открыто, но для работы разработчиков это нормально.

person mylesthe.dev    schedule 25.04.2015

Попробуйте https://github.com/AlexDisler/mysql-vagrant, он позволяет подключаться без ssh-туннель (конкретные настройки см. в install.sh).

person Alex    schedule 04.09.2014
comment
Сладкий! Я новичок в бродяжничестве и удивлен, что не нашел таких простых бродяг, как этот, в Vagrant Cloud... Спасибо! - person Brad Parks; 08.10.2014

Все приведенные выше ответы не работали для меня, пока я не попробовал это:

  • Подключитесь к вашему бродячему экземпляру, используя vagrant ssh
  • Когда просто введите passwd, чтобы установить новый пароль. Используйте пароль vagrant для согласованности.

Он будет легко подключаться после предпринятых шагов.

Спасибо @hugo за Как мне использовать Sequel Pro с PuPHPet?

person Alex Pogiba    schedule 28.05.2015

Ответ о адресе привязки правильный, однако я обнаружил, что вместо изменения значения на 0.0.0.0 лучше просто отредактировать файл my.cnf и полностью закомментировать адрес привязки.

Если вы сделаете это, а затем последуете остальной части исходного ответа, вы сможете подключиться через сиквел про.

person jose mera    schedule 09.12.2014

Для меня жизненно важной частью было использование 0.0.0.0 в качестве хоста MySQL вместо 127.0.0.1. Все остальное как обычно (используя SSH). Это работает для меня:

введите здесь описание изображения

person Lukas    schedule 04.12.2015

Ниже приведен мой снимок экрана для бродяги, подключенного с помощью mysql workbench из MAC введите здесь описание изображения

person AbdulBasit    schedule 28.03.2016

Ваше подключение к вашему Vagrant box должно быть выполнено через SSH. Поэтому, если вы подключались ранее и вносили какие-либо серьезные изменения в свой ящик Vagrant (например, уничтожение/восстановление), у вас может быть новый закрытый ключ, и вам необходимо обновить запись IP-адреса в ~/.ssh/known_hosts. Для этого откройте файл в vim и просто удалите строку, начинающуюся с IP-адреса вашего бродячего ящика.

person ctlockey    schedule 15.06.2017

Можно использовать vagrant port для проверки текущей переадресации портов (в случае, если у вас есть несколько бродячих ящиков).

Кроме того, если речь идет о нескольких бродячих ящиках, проблема может заключаться в том, что новый ключ ssh должен быть добавлен к хосту .ssh/known_hosts следующим образом:

  1. комментирование первого хоста vagrant box в .ssh/known_hosts хоста;

  2. добавление второго хоста vagrant box через диалоговое окно тестового подключения Sequel Pro;

  3. раскомментировав первый узел vagrant box в файле .ssh/known_hosts узла.

Итак, оба бродячих ящика (каждый со своим ключом) теперь известны.

person obotezat    schedule 13.09.2019