Question L'hôte 'xxx.xx.xxx.xxx' n'est pas autorisé à se connecter à ce serveur MySQL


Cela devrait être mort simple, mais je ne peux pas faites-le travailler pour la vie de moi.
J'essaie juste de me connecter à distance à mon serveur MySQL.

se connecter comme

mysql -u root -h localhost -p  

fonctionne bien, mais essayant

mysql -u root -h 'any ip address here' -p

échoue avec l'erreur

ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server

dans le mysql.user table, il y a exactement la même entrée pour l'utilisateur 'root' avec l'hôte 'localhost' qu'une autre avec l'hôte '%'.

Je suis à bout de nerfs et je ne sais pas comment procéder. Toutes les idées sont les bienvenues.


502
2017-10-13 12:40


origine


Réponses:


Peut-être une précaution de sécurité. Vous pouvez essayer d'ajouter un nouveau compte administrateur:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     WITH GRANT OPTION;

Bien que Pascal et d'autres aient noté que ce n'est pas une bonne idée d'avoir un utilisateur avec ce type d'accès ouvert à n'importe quelle adresse IP. Si vous avez besoin d'un administrateur, utilisez root et laissez-le sur localhost. Pour toute autre action, spécifiez exactement les privilèges dont vous avez besoin et limitez l'accessibilité de l'utilisateur, comme suggéré par Pascal ci-dessous.

Modifier:

De la FAQ MySQL:

Si vous ne pouvez pas comprendre pourquoi vous obtenez   Accès refusé, supprimer de l'utilisateur   tableau toutes les entrées qui ont hôte   valeurs contenant des caractères génériques (entrées   qui contiennent des caractères '%' ou '_'). UNE   erreur très commune est d'insérer un nouveau   entrée avec Host = '%' et   User = 'some_user', pensant que ceci   vous permet de spécifier localhost à   connecter à partir de la même machine. le   raison pour laquelle cela ne fonctionne pas est que   les privilèges par défaut incluent un   entrée avec Host = 'localhost' et   Utilisateur = ''. Parce que cette entrée a un hôte   valeur 'localhost' qui est plus   spécifique à '%', il est utilisé   préférence à la nouvelle entrée lorsque   connexion de localhost! La bonne   procédure est d'insérer une deuxième entrée   avec Host = 'localhost' et   User = 'some_user' ou pour supprimer le   entrée avec Host = 'localhost' et   Utilisateur = ''. Après avoir supprimé l'entrée,   N'oubliez pas d'émettre un PRIVILEGES FLUSH   instruction pour recharger les tables de subvention.   Voir aussi Section 5.4.4, «Accès   Contrôle, étape 1: Connexion   Vérification".


602
2017-10-13 12:47



On doit créer un new MySQL User et attribuer des privilèges comme ci-dessous dans Query prompt via phpMyAdmin ou une invite de commande:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Une fois fait avec les quatre requêtes, il devrait se connecter avec username / password


195
2017-09-16 05:56



Mon message d'erreur était similaire et dit 'L'hôte XXX n'est pas autorisé à se connecter à ce serveur MySQLmême si j'utilisais root. Voici comment vous assurer que root a les permissions correctes.

Ma configuration:

  • Ubuntu 14.04 LTS
  • MySQL v5.5.37

Solution

  1. Ouvrez le fichier sous 'etc / mysql / my.cnf'
  2. Vérifier:

    • port (par défaut c'est port = 3306)
    • bind-address (par défaut, c'est 'bind-address = 127.0.0.1'; si vous voulez ouvrir à tous, alors commentez cette ligne, pour mon exemple, je dirai que le serveur actuel est sur 10.1.1.7)
  3. Maintenant, accédez à la base de données MySQL sur votre serveur (disons que votre adresse distante est 123.123.123.123 sur le port 3306 en tant qu'utilisateur 'root' et que je veux changer les permissions sur la base de données 'dataentry' N'oubliez pas de changer l'adresse IP, le port et le nom de la base à vos paramètres)

    mysql -u root -p
    Enter password: <enter password>
    mysql>GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password';
    mysql>FLUSH PRIVILEGES;
    mysql>exit
    
  4. service sudo redémarrage mysqld

  5. Vous devriez maintenant pouvoir vous connecter à distance à votre base de données. Par exemple, j'utilise MySQL Workbench et je mets 'Hostname: 10.1.1.7', 'Port: 3306', 'Nom d'utilisateur: root'

83
2018-06-11 19:31



Vous devez accorder l'accès à l'utilisateur à partir de n'importe quel nom d'hôte.

Voici comment vous ajoutez de nouveaux privilèges à partir de phpmyadmin

Goto Privileges> Ajouter un nouvel utilisateur

enter image description here

Sélectionner Tout hôte pour le nom d'utilisateur souhaité

enter image description here


64
2018-06-21 11:42



Effectuez simplement les étapes suivantes:

1) Connectez-vous à mysql

mysql -uroot -p

2) Créer un utilisateur

CREATE USER 'user'@'%' IDENTIFIED BY 'password';

3) Accorder des autorisations

 GRANT ALL PRIVILEGES ON \*.\* TO 'user'@'%' WITH GRANT OPTION;

4) Privilèges Flush

FLUSH PRIVILEGES;

50
2018-03-24 09:27



Le message *Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server est une réponse du serveur MySQL au client MySQL. Notez comment il renvoie l'adresse IP et non le nom d'hôte.

Si vous essayez de vous connecter avec mysql -h<hostname> -u<somebody> -p et il retourne ce message avec l'adresse IP, alors le serveur MySQL n'est pas capable de faire une recherche inversée sur le client. Ceci est essentiel parce que c'est comment il mappe le client MySQL aux subventions.

Assurez-vous de pouvoir faire un nslookup <mysqlclient> Depuis le serveur MySQL. Si cela ne fonctionne pas, il n'y a pas d'entrée dans le serveur DNS. Vous pouvez également placer une entrée dans le fichier HOSTS du serveur MySQL (<ipaddress> <fullyqualifiedhostname> <hostname> <- La commande pourrait avoir de l'importance ici.

Une entrée dans le fichier hôte de mon serveur permettant une recherche inversée du client MySQL a résolu ce problème.


22
2018-03-13 13:37



Si vous modifiez les tables de droits manuellement (en utilisant INSERT, UPDATE, etc.), vous devez exécuter une FLUSH PRIVILEGES instruction de dire au serveur de recharger les tables de droits.

PS: Je ne recommanderais pas de permettre tout hôte pour se connecter pour tout utilisateur (surtout pas le root utilisation). Si vous utilisez mysql pour une application client / serveur, préférez une adresse de sous-réseau. Si vous utilisez mysql avec un serveur Web ou un serveur d'applications, utilisez des adresses IP spécifiques.


13
2017-10-13 12:56