Si je fais SHOW GRANTS
dans ma base de données mysql je reçois
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
IDENTIFIED BY PASSWORD 'some_characters'
WITH GRANT OPTION
Si je ne me trompe pas, root@localhost
signifie que l'utilisateur root
ne peut accéder au serveur que de localhost
. Comment puis-je dire à MySQL d'accorder à root
l'autorisation d'accéder à ce serveur mysql à partir de toutes les autres machines (du même réseau)?
Ceci accorde un accès root avec le même mot de passe depuis n'importe quelle machine de *.example.com
:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.example.com'
IDENTIFIED BY 'some_characters'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
Si la résolution de noms ne fonctionne pas, vous pouvez également accorder un accès par IP ou par sous-réseau:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%'
IDENTIFIED BY 'some_characters'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
Essayer:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;
Vous devez prendre certaines mesures pour vous assurer que tout d'abord mysql, puis l'utilisateur root, est accessible de l'extérieur:
Désactiver skip-networking
dans my.cnf
(c'est-à-dire: /etc/mysql/my.cnf
)
Vérifiez la valeur de bind-address
dans my.cnf
, si elle est définie sur 127.0.0.1
, vous pouvez la changer en 0.0.0.0
pour autoriser l'accès à partir de toutes les adresses IP ou de l'adresse à laquelle vous souhaitez vous connecter. .
Accorder un accès distant à l'utilisateur root à partir de n'importe quelle adresse IP (ou spécifiez votre adresse IP au lieu de %
)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
IDENTIFIED BY 'your_root_password'
WITH GRANT OPTION;
FLUSH PRIVILEGES;`
Redémarrez le service mysql:
Sudo service mysql restart
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
IDENTIFIED BY 'YOUR_PASS'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
*.* = DB.TABLE
vous pouvez limiter l'utilisateur à une base de données spécifique et à une table spécifique.
'root'@'%'
vous pouvez changer de racine avec n'importe quel utilisateur que vous avez créé et% doit autoriser toutes les adresses IP. Vous pouvez aussi le restreindre en modifiant% .168.1.1, etc.
Les subventions SQL que les autres partagent ne fonctionnent pas. Si vous ne parvenez toujours pas à accéder à la base de données, il est possible que vous n'ayez qu'une restriction de pare-feu pour le port. Cela dépend de votre type de serveur (et des routeurs entre ceux-ci) pour savoir comment ouvrir la connexion. Ouvrez TCP port 3306 entrant et donnez-lui une règle d'accès similaire pour les machines externes (all/subnet/single IP/etc.).
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]
-Ajouter une 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
-Nous ne le recommanderions pas pour l'environnement de production, mais si vos iptables ne sont pas configurés correctement, l'ajout de règles risque de ne toujours pas résoudre le problème. Dans ce cas, procédez comme suit:
service iptables stop
J'espère que cela t'aides.
Deux étapes:
configurer l'utilisateur avec un caractère générique:create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION
vim /etc/my.cnf
ajouter ce qui suit:bind-address=0.0.0.0
redémarrez le serveur, vous ne devriez pas avoir de problème pour vous y connecter.
Ouvrez le fichier /etc/mysql/mysql.conf.d/mysqld.cnf
et commentez la ligne suivante:
#bind-address = 127.0.0.1
Cela a fonctionné pour moi. Mais il y avait un problème étrange que même j’ai essayé d’abord ceux que cela n’affectait pas. J'ai mis à jour phpmyadmin page et je l'ai en quelque sorte fonctionné.
Si vous avez besoin d'accéder à local-xampp-mysql. Vous pouvez aller sur xampp-Shell -> ouvrir la commande Invite.
Puis, mysql -uroot -p --port = 3306 ou mysql -uroot -p (si un mot de passe est défini). Après cela, vous pouvez accorder ces accès depuis la page mysql Shell (vous pouvez également travailler depuis localhost/phpmyadmin).
Ajoutez-les si quelqu'un trouve ce sujet et rencontrez des problèmes pour débutants.