web-dev-qa-db-fra.com

Comment accorder des autorisations d'accès à distance au serveur mysql pour l'utilisateur?

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)?

114
Aufwind

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;

MySQL GRANT docs de la syntaxe.

140

Essayer:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;
91
moshe beeri

Vous devez prendre certaines mesures pour vous assurer que tout d'abord mysql, puis l'utilisateur root, est accessible de l'extérieur:

  1. Désactiver skip-networking dans my.cnf (c'est-à-dire: /etc/mysql/my.cnf)

  2. 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. .

  3. 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;`
    
  4. Redémarrez le service mysql:

    Sudo service mysql restart
    
43
Khashayar
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.

32
Wasim A.

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.).

8
user171212

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]

-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.

3
Kushal

Deux étapes:

  1. 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

  2. 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.

3
studio1057

Ouvrez le fichier /etc/mysql/mysql.conf.d/mysqld.cnf et commentez la ligne suivante:

#bind-address = 127.0.0.1
2
Vik2696

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.

0
icemanzzz