Zamontowałem nową maszynę VirtualBox z Vagrantem, a wewnątrz tej maszyny zainstalowałem Mysql Server. Jak mogę połączyć się z tym serwerem poza maszyną wirtualną? Przekierowałem już port 3306 pliku Vagrantfile, ale kiedy próbuję połączyć się z serwerem mysql, odpowiada on z błędem: 'reading initial communication packet'
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
mysql
virtualbox
vagrant
rizidoro
źródło
źródło
Odpowiedzi:
Upewnij się, że MySQL wiąże się z 0.0.0.0, a nie 127.0.0.1, w przeciwnym razie nie będzie dostępny z zewnątrz maszyny
Możesz to zapewnić, edytując plik my.conf i wyszukując
bind-address
element - chcesz, aby wyglądałbind-address = 0.0.0.0
. Następnie zapisz to i uruchom ponownie mysql:Jeśli robisz to na serwerze produkcyjnym, chcesz być świadomy konsekwencji dla bezpieczeństwa, omówionych tutaj: /server/257513/how-bad-is-setting-mysqls-bind-address-to -0-0-0-0
źródło
sed -i 's/symbolic-links=0/symbolic-links=0\nbind-address=0.0.0.0/g' /etc/my.cnf
bind-address
Host '10.0.2.2' is not allowed to connect to this MySQL server
. Ale rozwiązany przez serverfault.com/a/486716/147813mysql -e "create user 'root'@'10.0.2.2' identified by 'vagrant'; grant all privileges on *.* to 'root'@'10.0.2.2' with grant option; flush privileges;"
Zaloguj się do swojej skrzynki za pomocą
ssh [email protected] -p 2222
(hasło vagrant)Następnie:
sudo nano /etc/mysql/my.cnf
i zakomentuj następujące wiersze za pomocą ##skip-external-locking #bind-address
zapisz i wyjdź
następnie:
sudo service mysql restart
Następnie możesz połączyć się przez SSH z serwerem MySQL.
źródło
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
# skip-external-locking
rozwiązałem to!Niedawno natknąłem się na ten problem. Użyłem PuPHPet do wygenerowania pliku config.
Aby połączyć się z MySQL przez SSH, hasło „vagrant” nie działało, zamiast tego musiałem uwierzytelnić się za pomocą pliku klucza SSH.
Aby połączyć się z MySQL Workbench
Metoda połączenia
Standardowy protokół TCP / IP przez SSH
SSH
Hostname: 127.0.0.1:2222 (forwarded SSH port) Username: vagrant Password: (do not use) SSH Key File: C:\vagrantpath\puphpet\files\dot\ssh\insecure_private_key (Locate your insercure_private_key)
MySQL
Przetestuj połączenie.
źródło
Dla każdego, kto próbuje to zrobić za pomocą środowiska roboczego mysql lub sequel pro, oto dane wejściowe:
źródło: https://coderwall.com/p/yzwqvg
źródło
vagrant ssh-config
polecenia.Cóż, ponieważ żadna z podanych odpowiedzi nie pomogła mi, musiałem szukać więcej i znalazłem rozwiązanie w tym artykule.
Odpowiedź w skrócie jest następująca:
Łączenie się z MySQL za pomocą MySQL Workbench
Connection Method: Standard TCP/IP over SSH SSH Hostname: <Local VM IP Address (set in PuPHPet)> SSH Username: vagrant (the default username) SSH Password: vagrant (the default password) MySQL Hostname: 127.0.0.1 MySQL Server Port: 3306 Username: root Password: <MySQL Root Password (set in PuPHPet)>
Korzystając z tego podejścia, mogłem połączyć się z bazą danych mysql w vagrant z komputera hosta Ubuntu za pomocą MySQL Workbench, a także za pomocą Valentina Studio.
źródło
$HOME/project/.vagrant/machines/default/virtualbox/private_key
w Ubuntu 14.04vagrant ssh-config
polecenia.Oto kroki, które zadziałały po zalogowaniu się do skrzynki:
Zlokalizuj plik konfiguracyjny MySQL:
$ mysql --help | grep -A 1 "Default options" Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
W systemie Ubuntu 16 ścieżka to zazwyczaj
/etc/mysql/mysql.conf.d/mysqld.cnf
Zmień plik konfiguracyjny dla adresu powiązania:
Jeśli istnieje, zmień wartość w następujący sposób. Jeśli nie istnieje, dodaj go w dowolnym miejscu w sekcji [mysqld].
Zapisz zmiany w pliku konfiguracyjnym i uruchom ponownie usługę MySQL.
Utwórz / Przyznaj dostęp do użytkownika bazy danych:
Połącz się z bazą danych MySQL jako użytkownik root i uruchom następujące polecenia SQL:
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password'; mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%';
źródło
To zadziałało dla mnie: Połącz się z MySQL w Vagrant
username: vagrant password: vagrant sudo apt-get update sudo apt-get install build-essential zlib1g-dev git-core sqlite3 libsqlite3-dev sudo aptitude install mysql-server mysql-client sudo nano /etc/mysql/my.cnf change: bind-address = 0.0.0.0 mysql -u root -p use mysql GRANT ALL ON *.* to root@'33.33.33.1' IDENTIFIED BY 'jarvis'; FLUSH PRIVILEGES; exit sudo /etc/init.d/mysql restart # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant::Config.run do |config| config.vm.box = "lucid32" config.vm.box_url = "http://files.vagrantup.com/lucid32.box" #config.vm.boot_mode = :gui # Assign this VM to a host-only network IP, allowing you to access it # via the IP. Host-only networks can talk to the host machine as well as # any other machines on the same network, but cannot be accessed (through this # network interface) by any external networks. # config.vm.network :hostonly, "192.168.33.10" # Assign this VM to a bridged network, allowing you to connect directly to a # network using the host's network device. This makes the VM appear as another # physical device on your network. # config.vm.network :bridged # Forward a port from the guest to the host, which allows for outside # computers to access the VM, whereas host only networking does not. # config.vm.forward_port 80, 8080 config.vm.forward_port 3306, 3306 config.vm.network :hostonly, "33.33.33.10" end
źródło