Comment accorder le privilège de création de base de données à un utilisateur dans MySQL


11

La commande suivante fournit tous les privilèges dans toutes les bases de données pour l'utilisateur «admin». Mais cela ne permet pas à «admin» de créer une base de données.

GRANT ALL ON * . * TO 'admin'@'localhost'; 

Comment puis-je fournir l'accès à «admin» pour créer une base de données?

Alors que j'essaie de créer une base de données, j'obtiens l'erreur suivante -

ERREUR 1044 (42000): accès refusé pour l'utilisateur 'admin' @ 'localhost' à la base de données 'newdb'


L'avez-vous utilisé GRANT ALL ON *.* TO 'admin'@'localhost';? Dans votre exemple, vous dites que vous avez exécuté:, GRANT ALL ON * . * TO 'admin'@'hostname';mais hostnameest un hôte distinct de localhost.
oNare

le nom d'hôte est «localhost».
Abhishek

Étiez-vous connecté en tant que "root" lorsque vous avez exécuté cela GRANT?
Rick James

Oui. J'étais connecté en tant que "root" lorsque j'ai exécuté ce GRANT.
Abhishek

Avez-vous essayé en flush privileges;tant que root?
dwjv

Réponses:


5

TOUS les privilèges incluent "TOUS", sauf "AVEC L'OPTION GRANT" ... Ainsi, la commande ci-dessus permettra également à l'administrateur de créer la base de données.

Vous voudrez peut-être afficher l'erreur que vous obtenez. Notez que dans GRANT ci-dessus, vous n'avez pas spécifié le mot de passe pour l'utilisateur administrateur également.

Mise à jour:

Vous devriez pouvoir faire ce qui suit:

connectez-vous en tant que root et créez un utilisateur:

$] mysql -uroot -p
mysql> grant all privileges on *.* to 'admin'@'localhost';

Connectez-vous en tant qu'administrateur (sans mot de passe):

$] mysql -uadmin -p
mysql> create database admin;

Lorsque vous vous connectez, vous pouvez vérifier vos privilèges comme suit:

mysql> show grants;

ou

mysql> show grants for current_user();

mysql> select current_user() vous montrera, l'utilisateur auquel vous vous êtes connecté.


J'ai ajouté l'erreur dans ma question.
Abhishek

@abhishek update answer .... btw quelle commande est à l'origine de l'erreur ci-dessus? Vérifiez les subventions accordées à votre utilisateur? Êtes-vous sûr de vous connecter en tant qu'administrateur?
mysql_user

Oui, je suis sûr à 100% que je me connecte en tant qu'administrateur.
Abhishek

mysql> afficher les subventions; + ------------------------------------------------- ---------------------------- + | Subventions pour admin @ localhost | + ------------------------------------------------- ---------------------------- + | DONNER L'UTILISATION SUR . À 'admin' @ 'localhost' IDENTIFIÉ PAR MOT DE PASSE <secret> | | ACCORDER TOUS LES PRIVILÈGES SUR newdb. * À 'admin' @ 'localhost' | + ------------------------------------------------- ---------------------------- + 2 lignes en set (0,00 sec)
Abhishek

Notez que vous n'avez que tous les privilèges sur mbdb ... vous ne pourrez donc pas travailler avec d'autres db!
mysql_user

0

Un nouvel utilisateur n'a aucune autorisation pour faire quoi que ce soit avec les bases de données. En fait, si un nouvel utilisateur essaie même de se connecter (avec le mot de passe, le mot de passe), il ne pourra pas atteindre le shell MySQL.

Par conséquent, vous devez fournir à l'utilisateur l'accès

GRANT ALL PRIVILEGES ON * . * TO 'admin'@'localhost'; 

Les astérisques de cette commande font référence à la base de données et à la table (respectivement) auxquelles ils peuvent accéder. Cette commande spécifique permet à l'utilisateur de lire, modifier, exécuter et effectuer toutes les tâches dans toutes les bases de données et tables.

Une fois que vous avez finalisé les autorisations que vous souhaitez configurer pour vos nouveaux utilisateurs, assurez-vous toujours de recharger tous les privilèges.

FLUSH PRIVILEGES;

Maintenant, tous les changements seraient en vigueur.


Les privilèges de vidage ne sont pas requis pour les commandes GRANT.
mysql_user

Oui..Je suis d'accord .... Mais FLUSH PRIVILAGES est requis lorsque nous modifions la subvention sur les tables directement à l'aide d'instructions telles que INSERT, UPDATE ou DELETE ... Merci @mysql_user
Mathew
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.