web-dev-qa-db-fra.com

Comment ouvrir mon MySQL sur mon Raspberry Pi pour les connexions externes / distantes?

J'ai un Raspberry Pi qui stocke les données de température pour l'activité de homebrewing. Je crée une application Spring MVC sur mon ordinateur et je souhaite exploiter les données. Mon Pi et mon ordinateur sont tous deux sur le réseau local. Je peux parfaitement SSH et FTP dans mon RPi.

mysql --192.168.1.102 --u root -p db

Provoque un "Impossible de se connecter au serveur MySQL sur '192.168.1.102'".

Mon Java ne se connecte pas non plus, évidemment.

SHOW VARIABLES WHERE VARIABLE_NAME = 'port' ;

renvoie le port par défaut, 3306.

Existe-t-il un paramètre qui doit être activé pour autoriser les connexions à distance dans MySQL?

21
Matthew Moisen

J'ai récemment eu le même problème moi-même. Je l'ai fait fonctionner en procédant comme suit:

Modifier la configuration MySQL

Par défaut, MySQL n'est pas configuré pour accepter les connexions à distance. Vous pouvez activer les connexions à distance en modifiant le fichier de configuration:

Sudo nano /etc/mysql/my.cnf

Trouvez le [mysqld] section. La ligne que vous devez modifier est bind-address, qui doit être défini sur la valeur par défaut de 127.0.0.1. Vous souhaitez modifier cette ligne pour afficher à la place l'IP de votre RPi sur le réseau (qui semble être 192.168.1.102 dans votre exemple). Écrivez les changements.

Redémarrez le service MySQL

Sudo service mysql restart

Configurer les autorisations MySQL

Connectez-vous à votre instance MySQL en tant que root:

mysql -p -u root

Créez un utilisateur:

CREATE USER '<username>'@'<ip_address>' IDENTIFIED BY '<password>';  
  • Les apostrophes (') dans la syntaxe sont obligatoires
  • L'adresse IP est l'adresse IP de l'appareil sur le réseau à partir duquel vous essayez de vous connecter

Accordez des autorisations aux bases de données et aux tables pertinentes:

GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'<ip_address>' IDENTIFIED BY '<password>';
  • Les paramètres sont ceux que vous avez utilisés pour créer votre utilisateur à l'étape précédente
  • Le * donnera accès à toutes les tables de la base de données spécifiée. Alternativement, vous pouvez spécifier une table spécifique
  • Vous voudrez probablement renforcer la sécurité en n'accordant que les privilèges appropriés, mais cela devrait suffire pour tester son fonctionnement.

J'espère que cela devrait le faire!

33
Luke Zaparaniuk

Ce qui suit a fonctionné pour moi, grâce à un commentaire trouvé sur this instructable:

  1. Accordez l'accès à votre machine distante à l'aide de: GRANT ALL ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'your_password_here'; (J'ai utilisé 192.168.1.% Pour que tout ordinateur de mon réseau puisse s'y connecter)
  2. Allez dans le fichier my.cnf (Sudo nano /etc/mysql/my.cnf) fichier et recherchez "bind-address" et commentez ceci (mettez un # devant la ligne)
  3. Recharger la configuration MySQL (service mysql reload)
  4. Redémarrez le serveur MySQL (service mysql restart)
4
SausageFingers

Si votre problème ne parvient pas à se connecter à distance avec MySQL sur Raspberry Pi, essayez les étapes ci-dessous. J'ai eu le même problème et l'ai résolu en exécutant les commandes ci-dessous.

1) Sudo nano /etc/mysql/my.cnf

2) # bind-address = 127.0.0.1 // commente cette ligne

bind-address = 0.0.0.0          //add this line just below above line 

3) Sudo /etc/init.d/mysql restart // redémarrer mysql

4) Sudo mysql -u root -p // connectez-vous à mysql cli en tant qu'utilisateur 'root'

5) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'beta' WITH GRANT OPTION;

Ici, "root" est l'utilisateur mysql et "beta" est le mot de passe et ici les privilèges sont définis pour "root". Modifiez-le en conséquence et exécutez la requête ci-dessus dans mysql cli.

Bonne chance !!!

3
rinoy