Je suis nouveau dans le côté administrateur du SGBD et je mettais en place une nouvelle base de données ce soir (en utilisant MySQL) quand j'ai remarqué cela. Après avoir accordé à un utilisateur un privilège pour la première fois, une autre subvention est créée qui ressemble à
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
La documentation dit que le USAGE
privilège signifie «pas de privilèges», donc j'en déduis que les subventions fonctionnent de manière hiérarchique et qu'un utilisateur doit peut-être avoir une sorte de privilège pour toutes les bases de données, donc cela sert de fourre-tout?
Je ne comprends pas non plus pourquoi cette ligne contient une IDENTIFIED BY
clause alors que la subvention que j'ai créée n'en a pas (principalement parce que je ne comprends pas à quoi IDENTIFIED BY
sert la clause).
Edit: Désolé de ne pas l'avoir déclaré à l'origine, les subventions étaient
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
la source
Réponses:
Comme vous l'avez dit, dans MySQL
USAGE
est synonyme de "pas de privilèges". À partir du manuel de référence MySQL :USAGE
est un moyen de dire à MySQL qu'un compte existe sans lui conférer de réels privilèges. Ils ont simplement l'autorisation d' utiliser le serveur MySQL, par conséquentUSAGE
. Cela correspond à une ligne du`mysql`.`user`
tableau sans privilèges définis.La
IDENTIFIED BY
clause indique qu'un mot de passe est défini pour cet utilisateur. Comment savons-nous qu'un utilisateur est ce qu'il prétend être? Ils s'identifient en envoyant le mot de passe correct pour leur compte.Le mot de passe d'un utilisateur est l'un de ces attributs de compte de niveau global qui n'est pas lié à une base de données ou une table spécifique. Il vit aussi dans la
`mysql`.`user`
table. Si l'utilisateur ne dispose d'aucun autre privilègeON *.*
, il lui est accordéUSAGE ON *.*
et son hachage de mot de passe y est affiché. C'est souvent un effet secondaire d'uneCREATE USER
déclaration. Lorsqu'un utilisateur est créé de cette manière, il ne dispose initialement d'aucun privilège, il est donc simplement accordéUSAGE
.la source
J'essayais de trouver le sens
GRANT USAGE on *.* TO
et de trouver ici. Je peux clarifier ceGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
qui sera accordé lorsque vous créez l'utilisateur avec la commande suivante (CREATE
):Lorsque vous accordez un privilège avec
GRANT
, de nouveaux privilèges seront ajoutés par-dessus.la source
De plus, les mots de passe mysql lorsqu'ils n'utilisent pas la
IDENTIFIED BY
clause, peuvent être des valeurs vides, s'ils ne sont pas vides, ils peuvent être cryptés. Mais yesUSAGE
est utilisé pour modifier un compte en accordant des limiteurs de ressources simples tels queMAX_QUERIES_PER_HOUR
, encore une fois, cela peut être spécifié en utilisant également la clause WITH, en conjonction avecGRANT USAGE
(aucun privilège ajouté) ouGRANT ALL
, vous pouvez également spécifierGRANT USAGE
au niveau global, au niveau de la base de données, niveau table, etc ....la source