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 USAGE
privilegio 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 BY
cláusula cuando la subvención que creé no tiene una (principalmente porque no entiendo para qué IDENTIFIED BY
sirve 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
USAGE
es sinónimo de "sin privilegios". Del Manual de referencia de MySQL :USAGE
es 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 BY
clá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 USER
declaració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 *.* TO
y lo encontré aquí. Puedo aclarar queGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
se 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 BY
cláusula, pueden ser valores en blanco, si no están en blanco, pueden estar encriptadas. Pero síUSAGE
se 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 USAGE
a nivel global, nivel de base de datos, nivel de mesa, etc ....fuente