2010-10-06 5 views
0

Mon problème est cette commande produit une erreur lorsque j'ai essayé de se connecter depuis notre serveur à un autre serveur externe:Problème de connexion à la base de données MySQL externe

mysql -h db.hostname.com -u username [email protected] database_name 

Et voici l'erreur:

erreur 1044 (42000): Accès refusé pour l'utilisateur « nom d'utilisateur » @ « % » à la base de données « nom_base »

je l'ai déjà demandé l'administrateur du serveur externe pour ajouter notre IP dans leur pare-feu, mais sans succès ..

Cela a quelque chose à voir avec les privilèges de GRANTing pour le 'nom d'utilisateur'

+0

Le texte de la commande est-il cité mot à mot? Parce que vous n'avez pas d'espace entre l'option -p et le mot de passe ... –

+0

Il n'y a pas d'espace après -p. La raison en est que si vous omettez le mot de passe, il le demandera, par conséquent, par exemple. 'mysql -u username -p db' n'interprétera pas" db "comme un mot de passe, mais plutôt comme la base de données à utiliser, et il affichera le mot de passe. –

+0

Je pense qu'il ne devrait pas y avoir d'espace entre l'option -p et le mot de passe. et oui c'est comme ça que j'ai tapé la commande. Je viens de remplacer les valeurs réelles. – r2b2

Répondre

1

Ce n'est pas un problème avec le pare-feu, puisque MySQL est refusant la connexion. Comme vous le suspectez, c'est un problème avec les privilèges accordés à l'utilisateur. Vous devez exécuter ce sur le serveur MySQL (vous devrez peut-être modifier cela un peu si vous ne voulez pas accorder tous les privilèges à la db):

GRANT ALL ON database_name.* TO 'username'@'%' IDENTIFIED BY '[email protected]'; 

Notez également que si vous vous connectez toujours d'un particulier host/ip, c'est une meilleure idée de spécifier cet hôte/ip, au lieu d'utiliser un caractère générique %, qui permettrait des connexions de n'importe où.

+0

Je n'ai aucun contrôle sur le serveur externe auquel nous essayons de nous connecter car il est hébergé par une autre société de développement Web que notre bureau a embauchée pour construire nos sites Web. Cela dit, je ne peux que leur suggérer des choses. Comment doit-on le faire si seulement j'ai besoin de lire (SELECT) le privilège? Je suppose que le privilège SELECT est suffisant pour être autorisé par mysql? Et je lis juste les données de leur base de données de toute façon. – r2b2

+0

Pour cela vous feriez 'GRANT SELECT ON ...' –

0

Il semble que le mot de passe est faux, ou que le nom d'utilisateur que vous essayez d'utiliser n'est pas autorisé de se connecter à partir de l'adresse IP de votre ordinateur. Comme vous le savez, l'administrateur mysql sur le site distant peut spécifier quelles adresses IP sont autorisées à se connecter à l'aide d'un compte d'utilisateur donné. Gardez à l'esprit que l'adresse IP de votre ordinateur peut être routée à travers toutes sortes de routeurs et de pare-feux à la fin de votre entreprise avant d'atteindre la base de données externe. Par conséquent, votre adresse IP peut vous sembler différente de la base de données externe. Dans ce cas, cela ne sert à rien si l'administrateur de la base de données externe ajoute votre adresse IP à la liste 'autorisée', il devrait plutôt ajouter l'adresse IP 'monde extérieur'.

La manière la plus simple de savoir si cela s'applique à vous est la suivante: visitez www.whatismyip.com et notez l'adresse IP à l'écran. Ceci est votre PI vu du "monde extérieur". Il est très probable que cette adresse IP soit l'adresse IP externe d'un pare-feu ou d'un routeur au sein du réseau de votre entreprise, et non pas l'adresse IP de votre ordinateur.

Ensuite, (en supposant que vous êtes sous Windows) Allez dans Démarrer> Exécuter. Tapez cmd et appuyez sur Entrée. Tapez ipconfig et appuyez sur Entrée. Vous pouvez maintenant voir votre adresse IP locale.

Si ces deux adresses IP ne correspondent pas, indiquez à l'administrateur distant d'ajouter également votre adresse IP externe à la liste 'allowed'.

aussi - une fois que vous allez à la production, et déplacez votre code à un autre serveur, le plaisir IP commence à nouveau. Vous pouvez aussi corriger ceci tout de suite

Questions connexes