web-dev-qa-db-fra.com

Comment autoriser la connexion à distance à mysql

J'ai installé MySQL Community Edition 5.5 sur mon ordinateur local et je souhaite autoriser les connexions distantes afin de pouvoir me connecter à partir d'une source externe.

Comment puis je faire ça?

316
Leo

Cela est autorisé par défaut sur MySQL.

Ce qui est désactivé par défaut est l’accès distant root. Si vous voulez l'activer, exécutez cette commande SQL localement:

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
 FLUSH PRIVILEGES;

Ensuite, recherchez la ligne suivante et commentez-la dans votre fichier my.cnf, qui réside généralement sur /etc/mysql/my.cnf sous Unix/OSX. systèmes. Dans certains cas, l'emplacement du fichier est /etc/mysql/mysql.conf.d/mysqld.cnf).

Si c'est un système Windows, vous pouvez le trouver dans le répertoire d'installation de MySQL, généralement quelque chose comme C:\Program Files\MySQL\MySQL Server 5.5\ et le nom du fichier sera my.ini.

Changer de ligne

 bind-address = 127.0.0.1

à

 #bind-address = 127.0.0.1

Et redémarrez le serveur MySQL ( nix/OSX , et Windows ) pour que les modifications prennent effet.

701
mjuarez

Après avoir fait tout ce qui précède, je ne pouvais toujours pas me connecter en tant que root à distance, mais Telnetting sur le port 3306 a confirmé que MySQL acceptait les connexions.

J'ai commencé à regarder les utilisateurs de MySQL et j'ai remarqué qu'il y avait plusieurs utilisateurs root avec des mots de passe différents.

select user, Host, password from mysql.user;

Donc, dans MySQL I définir tous les mots de passe pour root à nouveau et je pourrais enfin me connecter à distance en tant que root.

use mysql;
update user set password=PASSWORD("NEWPASSWORD") where User='root';
flush privileges;
45
Matthew Lock

Juste une note de mon expérience, vous pouvez trouver le fichier de configuration sous ce chemin /etc/mysql/mysql.conf.d/mysqld.cnf.

(Je me suis battu pendant un certain temps pour trouver ce chemin)

30
Mayur Patel

Dans mon cas, j'essayais de me connecter à un serveur mysql distant sur un système d'exploitation. Après avoir parcouru de nombreuses solutions (octroi de tous les privilèges, suppression des liaisons ip, activation du réseau), le problème n’était toujours pas résolu.

En fin de compte, en cherchant diverses solutions, je suis tombé sur iptables, ce qui m’a fait comprendre que le port mysql 3306 n’acceptait pas les connexions.

Voici une petite note sur la façon dont j'ai vérifié et résolu ce problème.

  • Vérifier si le port accepte les connexions:
telnet (ip serveur mysql) [portNo]
  • Ajout de la règle de table ip pour autoriser les connexions sur le port:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPTER
  • Cela ne serait pas recommandé pour l’environnement de production, mais si vos iptables ne sont pas configurés correctement, l’ajout des règles risque de ne pas résoudre le problème. Dans ce cas, procédez comme suit:
service iptables stop

J'espère que cela t'aides.

24
Kushal

Veuillez suivre les étapes mentionnées ci-dessous afin de définir l’accès distant générique pour l’utilisateur MySQL.

(1) Ouvrez cmd.

(2) accédez au chemin C:\Program Files\MySQL\Serveur MySQL 5.X\bin et exécutez cette commande.

mysql -u root -p

(3) Entrez le mot de passe root.

(4) Exécutez la commande suivante pour fournir l'autorisation.

Accordez tous les privilèges sur *. * À 'USERNAME' @ 'IP' IDENTIFIÉ PAR 'MOT DE PASSE';

USERNAME: Nom d'utilisateur que vous souhaitez connecter au serveur MySQL.

IP: adresse IP publique à partir de laquelle vous souhaitez autoriser l'accès au serveur MySQL.

MOT DE PASSE: Mot de passe du nom d'utilisateur utilisé.

IP peut être remplacé par% pour permettre à l'utilisateur de se connecter à partir de n'importe quelle adresse IP.

(5) Rincez les empilements en suivant la commande et quittez-le.

FLUSH PRIVILEGES;

exit; ou \q

enter image description here

14
Hiren Parghi

Si vous avez installé MySQL à partir de brew, il écoute uniquement l'interface locale par défaut. Pour résoudre ce problème, vous devez éditer /usr/local/etc/my.cnf et changer le bind-address de 127.0.0.1 à *.

Puis lancez brew services restart mysql.

6
Timmmm

Si votre processus serveur MySQL écoute sur 127.0.0.1 ou :: 1 seulement, vous ne pourrez pas vous connecter à distance. Si vous avez un paramètre bind-address dans /etc/my.cnf, cela peut être la source du problème.

Vous devrez également ajouter des privilèges à un utilisateur non -localhost.

5
tadman

Pour ceux qui en ont besoin, vérifiez que le port de pare-feu 3306 est également ouvert, si votre service de pare-feu est en cours d’exécution.

2
Zelkovar

Juste pour info, je me suis démené avec ce problème pendant des heures .. enfin, j’ai appelé mon fournisseur d’hébergement et découvert que dans mon cas, en utilisant un serveur cloud, le panneau de configuration de 1and1 comporte un pare-feu secondaire que vous devez cloner et ajouter du port. 3306. Une fois ajouté je me suis tout de suite intégré ..

2
Dan

Ce blog Comment configurer un serveur MySQL sur un réseau local sera utile pour configurer une MySQL à partir de zéro

2

Si mysqld a une adresse de liaison définie sur une adresse de bouclage/locale (par exemple, 127.0.0.1), le serveur ne sera pas accessible depuis des hôtes distants, car une interface de bouclage ne peut pas être atteinte. à partir de tout hôte distant.

Définissez cette option sur 0.0.0.0 (:: pour IPv4 + 6) pour accepter les connexions de tout hôte ou sur une autre adresse accessible de l'extérieur si vous souhaitez autoriser uniquement les connexions sur une seule interface.

Source

1
Wesley Smith

Et pour OS X, sachez que le paramètre bind-address est généralement défini dans la plist launchd et non dans le fichier my.ini. Donc dans mon cas, j'ai retiré <string>--bind-address=127.0.0.1</string> de /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist.

1
tdmartin102

parfois besoin d’utiliser le nom du PC sous Windows

première étape) mis dans le fichier de configuration de mysql:

mysqld.cnf SET bind-address = 0.0.0.0

(pour laisser les connexions sur TCP/IP)

deuxième étape) créer un utilisateur dans mysql, les utilisateurs de la table, avec le nom du PC sous Windows propriétés, PAS ip

enter image description here

0
Rubén Ruíz