2010-07-15 3 views
6

Je suis en train de se connecter à ma base de données MySQL sur un serveur distant (via ssh) via la commande:l'autorisation MySQL a refusé de local, mais peut se connecter à distance

mysql -u me -h mydomain.com -p 

Mais il échoue avec une erreur 1045 (28000) : Accès refusé pour l'utilisateur .. erreur

Alors que

mysql -u me -h localhost -p 

Travaux

Maintenant, ce n'est pas seulement parce que je n'ai pas d'autorisations d'installation, car les permissions de cette base de données sont définies pour% ou n'importe quel hôte pour l'utilisateur me.

Ceci est prouvé par le fait que je peux me connecter correctement de ma machine locale au serveur, en utilisant le même utilisateur. à savoir exécutant la commande suivante de ma machine locale fonctionne:

mysql -u me -h mydomain.com -p 

Alors ma question pourquoi cela se produit et comment puis-je résoudre ce problème? Pourquoi ne puis-je pas me connecter à mon serveur mysql depuis mon serveur lorsque j'utilise le nom de domaine au lieu de localhost, même si les autorisations sont configurées pour accepter les connexions de n'importe quel hôte.

Répondre

16

Cela se produit en raison de la façon dont MySQL gère les autorisations d'accès.

Lorsque vous vous connectez à partir d'un hôte distant (ou de l'hôte local via une adresse IP externe), il correspondra à l'entrée [email protected]% (si il n'y a pas subvention spécifique pour l'hôte particulier que vous utilisez!). Mais lorsque vous vous connectez via l'interface de bouclage (l'adresse IP "localhost") ou une socket, il utilisera l'autorisation [email protected]. Donc, vous devez avoir deux GRANT PRIVILEGES; un pour [email protected] et un pour [email protected]%.

Questions connexes