Ich bin neu auf der Administratorseite von DBMS und habe heute Abend eine neue Datenbank eingerichtet (mit MySQL), als ich dies bemerkte. Nachdem einem Benutzer zum ersten Mal eine Berechtigung erteilt wurde, wird eine weitere Berechtigung erstellt, die wie folgt aussieht
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
In der Dokumentation heißt es, dass das USAGE
Privileg "keine Privilegien" bedeutet. Ich schließe daraus, dass diese Berechtigungen hierarchisch funktionieren und dass ein Benutzer möglicherweise eine Art Privileg für alle Datenbanken haben muss. Dies dient also als Fang für alle?
Ich verstehe auch nicht, warum diese Zeile eine IDENTIFIED BY
Klausel enthält, wenn der von mir erstellte Zuschuss keine enthält (hauptsächlich, weil ich nicht verstehe, welchem Zweck die IDENTIFIED BY
Klausel dient).
Bearbeiten: Entschuldigung, dass Sie dies ursprünglich nicht angegeben haben, die Zuschüsse waren
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
quelle
Antworten:
Wie Sie sagten, ist in MySQL
USAGE
gleichbedeutend mit "keine Privilegien". Aus dem MySQL-Referenzhandbuch :USAGE
Auf diese Weise können Sie MySQL mitteilen, dass ein Konto vorhanden ist, ohne diesem Konto echte Berechtigungen zu erteilen. Sie haben daher lediglich die Berechtigung, den MySQL-Server zu verwendenUSAGE
. Es entspricht einer Zeile in der`mysql`.`user`
Tabelle, für die keine Berechtigungen festgelegt wurden.Die
IDENTIFIED BY
Klausel gibt an, dass für diesen Benutzer ein Kennwort festgelegt wurde. Woher wissen wir, dass ein Benutzer der ist, von dem er sagt, dass er er ist? Sie identifizieren sich, indem sie das richtige Passwort für ihr Konto senden.Das Kennwort eines Benutzers ist eines dieser globalen Kontoattribute, das nicht an eine bestimmte Datenbank oder Tabelle gebunden ist. Es lebt auch in der
`mysql`.`user`
Tabelle. Wenn der Benutzer keine anderen Berechtigungen hatON *.*
, werden ihm diese gewährtUSAGE ON *.*
und sein Kennwort-Hash wird dort angezeigt. Dies ist oft ein Nebeneffekt einerCREATE USER
Aussage. Wenn ein Benutzer auf diese Weise erstellt wird, hat er zunächst keine Berechtigungen, sodass er lediglich gewährt wirdUSAGE
.quelle
Ich habe versucht, die Bedeutung von
GRANT USAGE on *.* TO
und hier zu finden. Ich kann klarstellen, dassGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
dies gewährt wird, wenn Sie den Benutzer mit dem folgenden Befehl ( ) erstellenCREATE
:Wenn Sie Berechtigungen mit gewähren
GRANT
, werden darüber hinaus neue Berechtigungen hinzugefügt.quelle
Außerdem können MySQL-Passwörter, wenn sie die
IDENTIFIED BY
Klausel nicht verwenden , leere Werte sein. Wenn sie nicht leer sind, können sie verschlüsselt sein. Aber jaUSAGE
verwendet wird , um ein Konto zu ändern , indem einfache Ressource Limiter Gewährung wieMAX_QUERIES_PER_HOUR
wiederum kann dies durch auch mit der WITH - Klausel angegeben werden, in Verbindung mitGRANT USAGE
(keine Privilegien hinzugefügt) oderGRANT ALL
können Sie auch angeben ,GRANT USAGE
auf globaler Ebene, Datenbankebene, Tabellenebene, etc ....quelle