Si je fais SHOW GRANTS
dans ma base de données mysql, j'obtiens
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
IDENTIFIED BY PASSWORD 'some_characters'
WITH GRANT OPTION
Si je ne me trompe pas, cela root@localhost
signifie que l'utilisateur root
ne peut accéder au serveur qu'à partir de localhost
. Comment dire à MySQL d'accorder également root
l'autorisation d'accéder à ce serveur mysql depuis toutes les autres machines (dans le même réseau)?
mysql
connection
grant
Aufwind
la source
la source
localhost
en%
accordera un accès root au réseau public. N'oubliez pas deflush privileges;
Réponses:
Cela accorde un accès root avec le même mot de passe depuis n'importe quelle machine dans
*.example.com
:Si la résolution de noms ne fonctionne pas, vous pouvez également accorder l'accès par IP ou sous-réseau:
Documentation sur la
GRANT
syntaxe MySQL .la source
...TO 'root'@'%' IDENTIFIED...
que vous accorderiez l'accès de partout?SHOW GRANTS
montre toujours la même chose (comme dans ma question). Je l'ai même faitFLUSH PRIVILGES
. Y a-t-il quelque chose qui me manque?FLUSH PRIVILEGES
. Déconnectez-vous et reconnectez-vous, redémarrez le service mysqld si vous y avez accès. Assurez-vous également que laskip networking
ligne n'est pas activée dans votremy.cnf
bien que cela ne rendrait pas compte du fait que vousSHOW GRANTS
n'êtes toujours pas le même.IDENTIFIED BY PASSWORD
est accompagné d'un nombre hexadécimal haché à 41 chiffres. À utiliserIDENTIFIED BY 'password'
si vous souhaitez inclure directement le mot de passe.Essayer:
la source
Pa55w0rd
semble stupide, ne me dites pas que c'est le mot de passe que vous voulez créer. Pour tous ceux qui essaient de se connecter à votre mysql?FLUSH PRIVILEGES;
Vous devez prendre quelques mesures pour vous assurer que le premier mysql, puis l'utilisateur root sont accessibles de l'extérieur:
Désactiver
skip-networking
dansmy.cnf
(ex:/etc/mysql/my.cnf
)Vérifiez la valeur de
bind-address
inmy.cnf
, si elle est définie sur127.0.0.1
, vous pouvez la modifier0.0.0.0
pour autoriser l'accès à partir de toutes les adresses IP ou de l'adresse IP à partir de laquelle vous souhaitez vous connecter.Accordez l'accès à distance à l'utilisateur root à partir de n'importe quelle adresse IP (ou spécifiez votre adresse IP au lieu de
%
)Redémarrez le service mysql:
la source
*.* = DB.TABLE
vous pouvez restreindre l'utilisateur à une base de données et à une table spécifiques.'root'@'%'
vous pouvez changer de racine avec n'importe quel utilisateur que vous avez créé et% est d'autoriser toutes les adresses IP. Vous pouvez également le restreindre en modifiant% .168.1.1 etc.Si cela ne résout pas, modifiez également my.cnf ou my.ini et commentez ces lignes
bind-address = 127.0.0.1
à#bind-address = 127.0.0.1
et
skip-networking
à#skip-networking
Raspberry Pi, j'ai trouvé la configuration de l'adresse de liaison sous
\etc\mysql\mariadb.conf.d\50-server.cnf
la source
*.*
et'user'@'address'
. Merci! :)Ces subventions SQL que les autres partagent fonctionnent. Si vous ne parvenez toujours pas à accéder à la base de données, il est possible que vous ayez simplement une restriction de pare-feu pour le port. Cela dépend de votre type de serveur (et de tous les routeurs intermédiaires) quant à la façon d'ouvrir la connexion. Ouvrez le port TCP 3306 entrant et donnez-lui une règle d'accès similaire pour les machines externes (tout / sous-réseau / IP unique / etc.).
la source
Ouvrez le
/etc/mysql/mysql.conf.d/mysqld.cnf
fichier et commentez la ligne suivante:la source
Dans mon cas, j'essayais de me connecter à un serveur mysql distant sur cent OS. Après avoir parcouru 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 cherchant 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.
-Ajout d'une règle de table ip pour permettre les connexions sur le port:
-Ne le recommanderais pas pour l'environnement de production, mais si vos iptables ne sont pas configurés correctement, l'ajout des règles pourrait ne pas toujours résoudre le problème. Dans ce cas, ce qui suit doit être fait:
J'espère que cela t'aides.
la source
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
ajoutez ce qui suit:
bind-address=0.0.0.0
redémarrez le serveur, vous ne devriez avoir aucun problème pour vous y connecter.
la source
Avec mysql 8 et version ultérieure, vous ne pouvez pas ajouter un utilisateur en accordant des privilèges. cela signifie avec cette requête:
mysql renverra cette erreur:
cela signifie que vous n'avez pas d'utilisateur root pour% domain. vous devez donc d'abord insérer l'utilisateur, puis accorder des privilèges comme celui-ci:
N'oubliez pas de remplacer les mots de passe par vos mots de passe spécifiques.
la source
Cela a fonctionné pour moi. Mais il y avait un problème étrange que même moi j'essayais d'abord ceux qu'il n'affectait pas. J'ai mis à jour la page phpmyadmin et je l'ai fait fonctionner.
Si vous avez besoin d'accéder à local-xampp-mysql. Vous pouvez aller à xampp-shell -> ouvrir l'invite de commande.
Puis mysql -uroot -p --port = 3306 ou mysql -uroot -p (s'il y a un mot de passe défini). Après cela, vous pouvez accorder ces accès à partir de la page du shell mysql (peut également fonctionner à partir de localhost / phpmyadmin).
Il suffit de les ajouter si quelqu'un trouve ce sujet et a des problèmes pour les débutants.
la source
Ubuntu 18.04
Installez et assurez-vous que mysqld est en cours d'exécution.
Allez dans la base de données et configurez l'utilisateur root:
Modifiez les autorisations mysqld et redémarrez:
Depuis une autre machine, testez .. Le port Obvs (3306) sur la machine mysqld doit autoriser la connexion depuis la machine de test.
Toute la "sécurité" supplémentaire de MySql n'aide pas du tout la sécurité, cela complique et obscurcit simplement, il est maintenant plus facile de tout gâcher que dans l'ancien temps, où vous utilisiez juste un mot de passe très long.
la source