Comment se connecter au Serveur Mysql à l'intérieur de VirtualBox Vagabond?
-
13-12-2019 - |
Question
J'ai monté une nouvelle Machine VirtualBox avec Vagrant, et à l'intérieur de cette machine virtuelle, j'ai installé le Serveur Mysql.Comment puis-je me connecter à ce serveur à l'extérieur de la vm?J'ai déjà transférer le port 3306 de la Vagrantfile , mais quand j'essaie de me connecter au serveur mysql, il est resposts avec l'erreur:"la lecture de la communication initiale du paquet'
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
La solution
Assurez-vous que MySQL se lie à 0.0.0.0 et pas 127.0.0.1 ou elle ne sera pas accessible de l'extérieur de la machine
Vous pouvez vous assurer en modifiant votre mon.fichier conf et la recherche de la bind-address
article--vous voulez qu'il ressemble bind-address = 0.0.0.0
.Puis l'enregistrer et redémarrer mysql:
sudo service mysql restart
Si vous faites cela sur un serveur de production, vous voulez être conscient des implications de sécurité, discutés ici: https://serverfault.com/questions/257513/how-bad-is-setting-mysqls-bind-address-to-0-0-0-0
Autres conseils
Connectez-vous à votre boîte avec ssh vagrant@127.0.0.1 -p 2222
(mot de passe vagrant)
Alors: sudo nano /etc/mysql/my.cnf
et commentez les lignes suivantes avec #
#skip-external-locking
#bind-address
enregistrer et quitter
alors: sudo service mysql restart
Ensuite, vous pouvez vous connecter via SSH à votre serveur MySQL.
Je suis tombé sur ce problème récemment.J'ai utilisé PuPhpet pour générer une config.
Pour se connecter à MySQL via SSH, le mot de passe "Vagrant" ne fonctionnait pas pour moi, mais je devais authentifier via le fichier de clé SSH.
Pour vous connecter avec MySQL Workbench
Méthode de connexion
TCP / IP standard sur 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)
Testez la connexion.
Pour quiconque tente de faire cela à l'aide de MySQL Workbench ou Suite Pro Voici les entrées:
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)
Source: https://coderwall.com/p/yzwqvg
Eh bien, car aucune des réponses données n'a aidé-moi, je devais regarder plus, et trouver une solution dans Cet article .
Et la réponse en un mot est la suivante:
Connexion à MySQL à l'aide de 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)>
Utilisation de l'approche donnée, j'ai pu se connecter à la base de données MySQL à Vagrant à partir de la machine Host Ubuntu à l'aide de MySQL Workbench et à l'aide de Valentina Studio.
Voici les étapes qui ont travaillé pour moi après l'enregistrement dans la boîte:
Recherchez MySQL fichier de configuration:
$ 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
Sur Ubuntu 16, le chemin d'accès est généralement /etc/mysql/mysql.conf.d/mysqld.cnf
Modifier le fichier de configuration de bind-address:
Si elle existe, modifiez la valeur comme suit.S'il n'existe pas, ajoutez-la n'importe où dans la section [mysqld].
bind-address = 0.0.0.0
Enregistrez vos modifications dans le fichier de configuration et redémarrer le service MySQL.
service mysql restart
Créer et / ou Accorder l'accès à la base de données de l'utilisateur:
Se connecter à la base de données MySQL en tant qu'utilisateur root et exécuter les ordres SQL suivants:
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%';
Ceci a fonctionné pour moi: Connectez-vous à MySQL à 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