J'ai créé une base de données et un utilisateur, et j'ai autorisé l'accès via les éléments suivants:
create user 'someuser'@'%' identified by 'password';
grant all privileges on somedb.* to 'someuser' with grant option;
cependant, lorsque j'essaie de me connecter à MySQL, j'obtiens l'erreur suivante:
$ mysql -u someuser -p
> Enter Password:
> ERROR 1045 (28000): Access denied for user 'someuser'@'localhost' (using password: YES)
Si "%" est le caractère générique, cela n'activerait-il pas également localhost? Cependant, si je ne spécifie pas que je veux utiliser un mot de passe, je peux me connecter très bien à la base de données, ce qui n'a aucun sens car je spécifie un mot de passe lorsque j'ai créé l'utilisateur.
Je suis sûr que vous avez besoin des éléments suivants:
accorder tous les privilèges sur somedb. * à 'someuser' @ '%' avec l'option d'octroi;
Votre déclaration GRANT n'a pas de déclaration de nom d'hôte.
la source
GRANT ALL ON somedb.* TO 'someuser'@'10.1.10.1';
Si vous ne parvenez pas à vous connecter à mysql en utilisant someuser @ '%' où '%' est le caractère générique pour le nom d'hôte, alors assurez-vous que vous n'avez pas d'entrée '' @localhost dans votre table utilisateur. Confirmez en utilisant l'instruction SQL suivante:
Si '' @localhost existe, supprimez-le en émettant l'instruction SQL suivante:
puis enfin
Someuser @ '%' va maintenant se connecter à la base de données.
la source
Ma compréhension, et je suis prêt à être corrigé à ce sujet, est que MySQL traite localhost séparément à%. c'est-à-dire que localhost n'est pas inclus dans le caractère générique.
la source
user@%
et cela n'a pas fonctionné jusqu'à ce que j'inclueuser@localhost
. Ensuite, j'ai vu la réponse stackoverflow.com/a/29421084/4850646 et j'ai réalisé que j'avais un utilisateur anonyme avec hostlocalhost
. J'ai supprimé tous les utilisateurs anonymes et j'ai pu y accéderlocalhost
pour cet utilisateur, même après avoir suppriméuser@localhost
(et laissé uniquementuser@%
). Il semble que parce qu'illocalhost
est plus spécifique que%
, il essaie d'abord l'localhost
utilisateur, même s'il s'agit d'un utilisateur anonyme!Avez-vous exécuté
flush privileges;
après avoir créé l'utilisateur? Si vous ne le faites pas, les modifications apportées aux utilisateurs / autorisations ne prendront qu'après le redémarrage du serveur.Ensuite, vérifiez que vous n'avez pas d'entrée '%' @ 'localhost'.
la source