Soy nuevo en el lado de administración de DBMS y estaba configurando una nueva base de datos esta noche (usando MySQL) cuando noté esto. Después de conceder un privilegio a un usuario por primera vez, se crea otra concesión que parece
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
La documentación dice que el USAGEprivilegio significa "sin privilegios", por lo que estoy infiriendo que las concesiones funcionan jerárquicamente y tal vez un usuario debe tener algún tipo de privilegio para todas las bases de datos, ¿entonces esto sirve como un truco?
Tampoco entiendo por qué esta línea tiene una IDENTIFIED BYcláusula cuando la subvención que creé no tiene una (principalmente porque no entiendo para qué IDENTIFIED BYsirve la cláusula).
Editar: Lo siento por no decir esto originalmente, las subvenciones fueron
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
fuente

Respuestas:
Como dijiste, en MySQL
USAGEes sinónimo de "sin privilegios". Del Manual de referencia de MySQL :USAGEes una forma de decirle a MySQL que existe una cuenta sin conferir ningún privilegio real a esa cuenta. Simplemente tienen permiso para usar el servidor MySQL, por lo tantoUSAGE. Corresponde a una fila de la`mysql`.`user`tabla sin privilegios establecidos.La
IDENTIFIED BYcláusula indica que se establece una contraseña para ese usuario. ¿Cómo sabemos que un usuario es quien dice ser? Se identifican enviando la contraseña correcta para su cuenta.La contraseña de un usuario es uno de esos atributos de cuenta de nivel global que no está vinculado a una base de datos o tabla específica. También vive en la
`mysql`.`user`mesa. Si el usuario no tiene ningún otro privilegioON *.*, se le otorganUSAGE ON *.*y el hash de su contraseña se muestra allí. Suele ser un efecto secundario de unaCREATE USERdeclaración. Cuando se crea un usuario de esa manera, inicialmente no tiene privilegios, por lo que simplemente se le otorganUSAGE.fuente
Estaba tratando de encontrar el significado de
GRANT USAGE on *.* TOy lo encontré aquí. Puedo aclarar queGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD passwordse otorgará cuando cree el usuario con el siguiente comando (CREATE):Cuando otorgue privilegios con
GRANT, se agregarán nuevos privilegios encima.fuente
Además, las contraseñas de mysql cuando no se usa la
IDENTIFIED BYcláusula, pueden ser valores en blanco, si no están en blanco, pueden estar encriptadas. Pero síUSAGEse usa para modificar una cuenta otorgando limitadores de recursos simples comoMAX_QUERIES_PER_HOUR, nuevamente, esto se puede especificar también usando la cláusula WITH, junto conGRANT USAGE(sin privilegios agregados) oGRANT ALL, también puede especificarGRANT USAGEa nivel global, nivel de base de datos, nivel de mesa, etc ....fuente