Como conectar-se ao Mysql Server dentro do VirtualBox Vagrant?
-
13-12-2019 - |
Pergunta
Montei uma nova máquina VirtualBox com Vagrant, e dentro dessa VM instalei o Mysql Server.Como posso me conectar a esse servidor fora da VM?Já encaminhei a porta 3306 do Vagrantfile , mas quando tento conectar no servidor mysql ele responde com o erro:'lendo o pacote de comunicação inicial'
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
Solução
Certifique-se de que o MySQL esteja vinculado a 0.0.0.0 e não a 127.0.0.1 ou não estará acessível de fora da máquina
Você pode garantir isso editando seu arquivo my.conf e procurando pelo bind-address
item - você quer que ele se pareça bind-address = 0.0.0.0
.Então salve isso e reinicie o mysql:
sudo service mysql restart
Se estiver fazendo isso em um servidor de produção, você deve estar ciente das implicações de segurança, discutidas aqui: https://serverfault.com/questions/257513/how-bad-is-setting-mysqls-bind-address-to-0-0-0-0
Outras dicas
Faça login em sua caixa com ssh vagrant@127.0.0.1 -p 2222
(senha vagabundo)
Então: sudo nano /etc/mysql/my.cnf
e comente as seguintes linhas com #
#skip-external-locking
#bind-address
salve e saia
então: sudo service mysql restart
Então você pode se conectar via SSH ao seu servidor MySQL.
Me deparei com esse problema recentemente.Usei o PuPHPet para gerar uma configuração.
Para conectar-se ao MySQL através de SSH, a senha "vagrant" não estava funcionando para mim; em vez disso, tive que autenticar através do arquivo de chave SSH.
Para se conectar com o MySQL Workbench
Método de conexão
TCP/IP padrão sobre 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
Server Port: 3306
username: (root, or username)
password: (password)
Teste a conexão.
Para quem está tentando fazer isso usando o mysql workbench ou o sequel pro, estas são as entradas:
Mysql Host: 192.168.56.101 (or ip that you choose for it)
username: root (or mysql username u created)
password: **** (your mysql password)
database: optional
port: optional (unless you chose another port, defaults to 3306)
ssh host: 192.168.56.101 (or ip that you choose for this vm, like above)
ssh user: vagrant (vagrants default username)
ssh password: vagrant (vagrants default password)
ssh port: optional (unless you chose another)
Bom, como nenhuma das respostas dadas me ajudou, tive que procurar mais, e encontrei solução em esse artigo.
E a resposta em poucas palavras é a seguinte:
Conectando-se ao MySQL usando 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)>
Usando a abordagem dada, consegui me conectar ao banco de dados mysql no vagrant da máquina host Ubuntu usando MySQL Workbench e também usando Valentina Studio.
Aqui estão as etapas que funcionaram para mim depois de fazer login na caixa:
Localize o arquivo de configuração do 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
No Ubuntu 16, o caminho normalmente é /etc/mysql/mysql.conf.d/mysqld.cnf
Altere o arquivo de configuração do endereço de ligação:
Se existir, altere o valor da seguinte maneira.Se não existir, adicione-o em qualquer lugar da seção [mysqld].
bind-address = 0.0.0.0
Salve suas alterações no arquivo de configuração e reinicie o serviço MySQL.
service mysql restart
Criar/Conceder acesso ao usuário do banco de dados:
Conecte-se ao banco de dados MySQL como usuário root e execute os seguintes comandos SQL:
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%';
Isso funcionou para mim: Conecte-se ao MySQL no 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