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?
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.
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;
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)
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.
telnet (ip serveur mysql) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPTER
service iptables stop
J'espère que cela t'aides.
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
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
.
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
.
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.
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é ..
Ce blog Comment configurer un serveur MySQL sur un réseau local sera utile pour configurer une MySQL
à partir de zéro
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.
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
.
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