108 votes

Pourquoi un "GRANT USAGE" est-il créé la première fois que j'accorde des privilèges à un utilisateur?

Je suis nouveau à l'admin côté de SGBD et mise en place d'une nouvelle base de données ce soir (à l'aide de MySQL) quand je l'ai remarqué. Après l'octroi d'un utilisateur d'un privilège pour la première fois, une autre subvention est créé, qui ressemble à

GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password

La documentation dit que "l'UTILISATION de" privilège signifie "pas de privilèges," je suis donc inférer des thats subventions de travailler de façon hiérarchique et peut-être un utilisateur doit avoir une sorte de privilège pour toutes les bases de données, de sorte que cela sert comme un fourre-tout?

Aussi je ne comprends pas pourquoi cette ligne a un "IDENTIFIÉES PAR la" clause au moment de la subvention que j'ai créé n'en ont pas (surtout parce que je ne comprends pas ce que le but de l'IDENTIFIÉS PAR la clause sert).

Edit: Désolé de ne pas l'indiquer, à l'origine, les subventions ont été

GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user

156voto

Espresso_Boy Points 666

Comme vous l'avez dit, dans MySQL USAGE est synonyme de "pas de privilèges". À partir du Manuel de Référence de MySQL:

L'UTILISATION privilège spécificateur signifie "pas de privilèges." Il est utilisé au niveau mondial, avec une SUBVENTION de modifier les attributs de compte telles que les limites des ressources ou SSL caractéristiques sans touchant les privilèges de compte.

USAGE est une façon de dire à MySQL qu'un compte existe, sans accorder une réelle privilèges de compte. Ils ont tout simplement l'autorisation d' utiliser MySQL, par conséquent USAGE. Il correspond à une ligne dans l' `mysql`.`user` tableau avec pas de privilèges défini.

L' IDENTIFIED BY clause indique qu'un mot de passe est défini pour l'utilisateur. Comment savons-nous qu'un utilisateur est en fait qui ils disent qu'ils sont? Ils identifient eux-mêmes en envoyant le mot de passe correct pour leur compte.

Un mot de passe utilisateur est l'un de ceux au niveau mondial des attributs de compte qui n'est pas lié à une base de données ou une table. Elle vit également dans l' `mysql`.`user` table. Si l'utilisateur ne dispose pas des privilèges ON *.*, ils sont accordés USAGE ON *.* et leur hachage de mot de passe est affiché. C'est souvent un effet secondaire d'un CREATE USER déclaration. Lorsqu'un utilisateur est créé de cette façon, ils n'ont pas de privilèges, de sorte qu'ils sont simplement accordé USAGE.

12voto

5YrsLaterDBA Points 5142

J'essayais de trouver la signification de GRANT USAGE on *.* TO et on la trouve ici. Je peux préciser que GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password sera accordé lorsque vous créez l'utilisateur avec la commande suivante ( create ): create user 'user'@'localhost' identified by 'password'; Lorsque vous accordez un privilège avec grant , nouveau privilège s sera ajouté par-dessus.

3voto

s1los Points 21

De plus, les mots de passe mysql lorsque vous n'utilisez pas la clause IDENTIFIED BY peuvent être des valeurs vides. Si elles ne sont pas vierges, elles peuvent être chiffrées. Mais oui USAGE est utilisé pour modifier un compte en accordant des limiteurs de ressources simples tels que MAX_QUERIES_PER_HOUR. Cela peut à nouveau être spécifié en utilisant également la clause WITH, associée à GRANT USAGE (aucun privilège ajouté) ou GRANT ALL, vous pouvez également spécifier GRANT USAGE. au niveau global, niveau base de données, niveau table, etc ....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X