A essayé
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Obtenir
ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de 'IDENTIFIED BY' root 'WITH GRANT OPTION' à la ligne 1.
Remarque: le même fonctionne lorsqu'il est essayé dans les versions précédentes.
Également essayé
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Obtenir
ERREUR 1410 (42000): vous n'êtes pas autorisé à créer un utilisateur avec GRANT
Le nom d'utilisateur / mot de passe MySQL (8.0.11.0) est root / root.
mysql
mysql-error-1064
mysql-8.0
Praveen
la source
la source
mysql -u root -p
, puis en entrant le mot de passe root. Ensuite, j'ai essayéGRANT GRANT OPTION ON *.* TO 'root'@'%';
et j'obtiens l'erreurERROR 1410 (42000): You are not allowed to create a user with GRANT
Réponses:
À partir de MySQL 8, vous ne pouvez plus (implicitement) créer un utilisateur à l'aide de la
GRANT
commande. Utilisez plutôt CREATE USER , suivi de l' instruction GRANT :Attention aux risques de sécurité liés à
WITH GRANT OPTION
, voir:la source
SELECT User, Host FROM mysql.user;
place.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
1) Cela a fonctionné pour moi. Tout d'abord, créez un nouvel utilisateur. Exemple: utilisateur
foo
avec mot de passebar
2) Remplacez le code ci-dessous par un nom d'utilisateur avec «foo».
3) Connectez-vous en tant qu'utilisateur foo
Mot de passe: bar
4) Assurez-vous que votre connexion initiale depuis Sequelize est définie sur foo avec pw bar.
la source
Je vois beaucoup de (mauvaises) réponses, c'est aussi simple que ceci:
Remarque: au lieu d'un auto-créé,
user
vous pouvez utiliserroot
pour vous connecter à la base de données. Cependant, l'utilisation du compte racine par défaut pour permettre à une application de se connecter à la base de données n'est pas la méthode préférée.Privilèges alternatifs (soyez prudent et rappelez-vous le principe du moindre privilège):
Si vous rencontriez en quelque sorte l'erreur suivante:
Vous devez ajouter / modifier les deux lignes suivantes
/etc/mysql/my.cnf
et redémarrer mysql:la source
GRANT ALL ON
pour MySQL 8.0. Aussi, je crois qu'au lieu de désactiver,bind-address
vous pouvez vous lier127.0.0.1
et inclure--protocol=tcp
dans toutes les commandes. La performance à long terme est également meilleure qu'aveclocalhost
.Mes spécifications:
Ce qui a fonctionné pour moi:
Réponse dans les deux requêtes:
NB: J'ai créé une base de données (db_name) plus tôt et je créais un identifiant d'utilisateur avec tous les privilèges accordés à toutes les tables de la base de données au lieu d'utiliser l'utilisateur root par défaut que j'ai lu quelque part est une bonne pratique.
la source
L'utilisateur spécifié n'existe tout simplement pas sur votre MySQL (donc, MySQL essaie de le créer avec GRANT comme il le faisait avant la version 8, mais échoue avec les limitations, introduites dans cette version).
MySQL est assez stupide à ce stade, donc si vous avez 'root' @ 'localhost' et que vous essayez d'accorder des privilèges à 'root' @ '%', il les traite comme des utilisateurs différents, plutôt que comme une notion généralisée pour l'utilisateur root sur n'importe quel hôte, y compris localhost.
Le message d'erreur est également trompeur.
Donc, si vous obtenez le message d'erreur, vérifiez vos utilisateurs existants avec quelque chose comme ça
puis créez l'utilisateur manquant (comme Mike l'a conseillé) ou ajustez votre commande GRANT à la spécificaion réelle de l'utilisateur existant.
la source
Juste mes 2 cents sur le sujet. J'avais exactement le même problème en essayant de me connecter à partir de MySQL Workbench. J'exécute une machine virtuelle bitnami-mysql pour configurer un bac à sable local pour le développement.
Le tutoriel de Bitnami dit d'exécuter la commande 'Accorder tous les privilèges':
Cela ne fonctionnait clairement pas, je l'ai finalement fait fonctionner en utilisant la réponse de Mike Lischke.
Je pense que ce qui s'est passé, c'est que l'utilisateur root @% avait des informations d'identification incorrectes associées. Donc, si vous avez essayé de modifier les privilèges de l'utilisateur et sans succès, essayez:
Depuis la console Mysql:
Liste des utilisateurs (utile pour voir tous vos utilisateurs):
Supprimer l'utilisateur souhaité:
Créer un utilisateur et accorder des autorisations:
Exécutez cette commande:
Localisez votre fichier de configuration mysql 'my.cnf' et recherchez une ligne qui ressemble à ceci:
et commentez-le en utilisant un '#':
Ensuite, redémarrez votre service mysql.
J'espère que cela aide quelqu'un ayant le même problème!
la source
Cela a fonctionné pour moi:
la source
Vérifiez que votre nom d'utilisateur et votre domaine sont identiques à ceux créés précédemment. MySQL sélectionne le compte par les deux colonnes de la table des utilisateurs.Si c'est différent, mysql peut penser que vous souhaitez créer un nouveau compte par concession, ce qui n'est pas pris en charge après la version 8.0.
la source
Mes spécifications:
Ce qui a fonctionné pour moi:
la source
Eh bien, j'ai juste eu le même problème. Même si la route avait '%' ne pouvait pas se connecter à distance. Maintenant, en regardant le
my.ini
fichier (fichier de configuration dans Windows), l'bind-address
instruction a été manquée.Alors ... j'ai mis ça
bind-address = *
après[mysqld]
et redémarré le service. Maintenant ça marche!la source
1. accorder des privilèges
mysql> ACTIVER TOUS LES PRIVILÈGES. TO 'root' @ '%' AVEC L'OPTION GRANT;
mysql> FLUSH PRIVILEGES
2. vérifier la table des utilisateurs:
mysql> utilisez mysql
mysql> sélectionner l'hôte, l'utilisateur de l'utilisateur
3.Modifiez le fichier de configuration
mysql default bind ip : 127.0.0.1, si nous voulons visiter les services à distance, supprimez simplement la configuration
4. redémarrer définitivement les services
les services de brassage redémarrent mysql
la source
Cela peut fonctionner:
la source
J'ai eu ce même problème, qui m'a conduit ici. En particulier, pour le développement local, je voulais pouvoir m'en
mysql -u root -p
passersudo
. Je ne veux pas créer un nouvel utilisateur. Je souhaite utiliser àroot
partir d'une application Web PHP locale.Le message d'erreur est trompeur, car il n'y avait rien de mal avec les
'root'@'%'
privilèges d'utilisateur par défaut .Au lieu de cela, comme plusieurs personnes l'ont mentionné dans les autres réponses, la solution était simplement de définir
bind-address=0.0.0.0
au lieu debind-address=127.0.0.1
dans ma/etc/mysql/mysql.conf.d/mysqld.cnf
configuration. Aucun changement n'était par ailleurs requis.la source
J'ai eu le même problème sur CentOS et cela a fonctionné pour moi (version: 8.0.11):
la source