J'ai installé MySQL Community Edition 5.5 sur ma machine locale et je souhaite autoriser les connexions à distance afin de pouvoir me connecter à partir d'une source externe.
Comment puis je faire ça?
sudo mysql_secure_installation
. Pour info.
J'ai installé MySQL Community Edition 5.5 sur ma machine locale et je souhaite autoriser les connexions à distance afin de pouvoir me connecter à partir d'une source externe.
Comment puis je faire ça?
sudo mysql_secure_installation
. Pour info.
Réponses:
Cela est autorisé par défaut sur MySQL.
Ce qui est désactivé par défaut, c'est l' root
accès à distance . Si vous souhaitez l'activer, exécutez cette commande SQL localement:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Et puis trouvez la ligne suivante et commentez-la dans votre my.cnf
fichier, qui vit généralement sur /etc/mysql/my.cnf
les systèmes Unix / OSX. 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 de 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 ( Unix / OSX et Windows ) pour que les modifications prennent effet.
my.cnf
fichier et n'y trouvent pas de bind-address
directive, notez que dans mon cas (MySQL version 14.14 sur Ubuntu 16.04.2) l'emplacement du fichier était/etc/mysql/mysql.conf.d/mysqld.cnf
Après avoir fait tout ce qui précède, je ne pouvais toujours pas me connecter à root
distance, mais Telnetting au port a 3306
confirmé qu'il MySQL
acceptait les connexions.
J'ai commencé à regarder les utilisateurs de MySQL et j'ai remarqué qu'il y avait plusieurs utilisateurs root avec différents mots de passe.
select user, host, password from mysql.user;
Donc, dans MySQL
j'ai défini à nouveau tous les mots de passe pour root et je pouvais enfin me connecter à distance en tant que root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Juste une note de mon expérience, vous pouvez trouver le fichier de configuration sous ce chemin /etc/mysql/mysql.conf.d/mysqld.cnf
.
(J'ai lutté pendant un certain temps pour trouver ce chemin)
sudo find /etc -iname 'mysql*.cnf'
Dans mon cas, j'essayais de me connecter à un serveur mysql distant sur cent OS. Après avoir traversé de nombreuses solutions (octroi de tous les privilèges, suppression des liaisons IP, activation de la mise en réseau), le problème n'était toujours pas résolu.
Il s'est avéré qu'en examinant diverses solutions, je suis tombé sur iptables, ce qui m'a fait réaliser 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 (adresse IP du serveur mysql) [portNo]
iptables -A ENTRÉE -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
service iptables s'arrête
J'espère que cela t'aides.
Veuillez suivre les étapes mentionnées ci-dessous afin de définir l'accès à distance générique pour l'utilisateur MySQL.
(1) Ouvrez cmd.
(2) accédez au chemin C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin et exécutez cette commande.
mysql -u root -p
(3) Saisissez le mot de passe root.
(4) Exécutez la commande suivante pour fournir l'autorisation.
ACCORDER TOUS LES PRIVILÈGES SUR *. * À 'USERNAME' @ 'IP' IDENTIFIED BY 'PASSWORD';
USERNAME: Nom d'utilisateur que vous souhaitez vous 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 privilèges en suivant la commande et quittez.
RINCER LES PRIVILÈGES;
sortie; ou \ q
Si votre processus serveur MySQL écoute uniquement sur 127.0.0.1 ou :: 1, vous ne pourrez pas vous connecter à distance. Si vous avez un bind-address
paramètre, /etc/my.cnf
cela peut être la source du problème.
Vous devrez également ajouter des privilèges pour un non- localhost
utilisateur.
127.0.0.1
?
Si vous avez installé MySQL, brew
il n'écoute vraiment que sur l'interface locale par défaut. Pour résoudre ce problème, vous devez modifier /usr/local/etc/my.cnf
et modifier le bind-address
de 127.0.0.1
à *
.
Ensuite, courez brew services restart mysql
.
Tous les processus de connexion à distance. La connexion à distance est désactivée par défaut.Vous devez l'ouvrir manuellement pour tous les ip ... pour donner accès à tous les ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Ip spécifique
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
puis
flush privileges;
Vous pouvez vérifier votre hôte utilisateur et votre mot de passe
SELECT host,user,authentication_string FROM mysql.user;
Maintenant, votre devoir est de changer cela
bind-address = 127.0.0.1
Vous pouvez le trouver sur
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
si vous ne trouvez pas cela là-bas, essayez ceci
sudo nano /etc/mysql/my.cnf
commenter dans ce
#bind-address = 127.0.0.1
Redémarrez ensuite Mysql
sudo service mysql restart
Profitez maintenant d'une connexion à distance
Juste pour info j'ai tiré mes cheveux avec ce problème pendant des heures .. enfin j'ai appelé mon hébergeur et j'ai trouvé que dans mon cas en utilisant un serveur cloud qui dans le panneau de contrôle pour 1and1 ils avaient un pare-feu secondaire que vous devez cloner et ajouter un port 3306. Une fois ajouté, je suis entré directement ..
Ce blog Comment configurer un serveur MySQL sur un réseau local sera utile pour configurer un à MySQL
partir de zéro
Et pour les utilisateurs d'OS X, sachez que le paramètre bind-address est généralement défini dans le launchd plist et non dans le fichier my.ini. Donc, dans mon cas, je me suis retiré <string>--bind-address=127.0.0.1</string>
de /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Si mysqld
une adresse de liaison est définie sur une adresse de bouclage / locale (par exemple 127.0.0.1
), le serveur ne sera pas accessible à partir d'hôtes distants, car une interface de bouclage ne peut être atteinte à partir d'aucun hôte distant.
Définissez cette option sur 0.0.0.0
( ::
pour IPv4 + 6) pour accepter les connexions de n'importe quel hôte, ou vers une autre adresse accessible en externe si vous ne souhaitez autoriser les connexions que sur une seule interface.
L'activation de l'accès root à distance peut être dangereuse. Il serait préférable de configurer des comptes d'utilisateurs avec des autorisations plus restrictives. Les trois étapes suivantes devraient le faire.
Assurez-vous que la ligne commençant par bind-address ...
est au moins mise en commentaire dans votre fichier my.ini ou my.cnf. S'il n'existe pas, continuez. Vous pouvez trouver ce fichier dans C:\ProgramData\MySQL\MySQL Server 8.0
Windows.
Ensuite, vérifiez que le compte d'utilisateur avec lequel vous établissez la connexion n'a pas localhost
dans le champ Limit to Hosts Matching. Bien que cela ne soit pas recommandé, vous pouvez le mettre %
à la place à des fins de test. Vous pouvez le faire en ouvrant une connexion locale au serveur avec MySQL Workbench, puis en accédant à Serveur> Utilisateurs et privilèges dans la barre de menus et en trouvant le compte d'utilisateur avec lequel vous souhaitez vous connecter.
Le champ "Limiter à la correspondance des hôtes" est ce qui vous interdit de vous connecter de manière non locale. C'est-à-dire qu'il limite les connexions acceptées à un modèle d'adresses IP. Idéalement, vous devriez accéder au serveur MySQL à partir d'une adresse IP statique ou d'un sous-réseau, afin d'être aussi restrictif que possible.
parfois besoin d'utiliser le nom du pc sur windows
première étape) mettre dans le fichier de configuration de mysql:
mysqld.cnf SET bind-address = 0.0.0.0
(pour laisser les connexions recibe via tcp / ip)
deuxième étape) rendre l'utilisateur dans mysql, les utilisateurs de table, avec le nom du pc sur les propriétés de windows , PAS ip