mysql - password - ¿Por qué se crea un "USO GRANT" la primera vez que otorgo privilegios de usuario?
mysql grant all privileges identified by password (3)
Además, las contraseñas de mysql cuando no se utiliza la cláusula IDENTIFIED BY
, pueden ser valores en blanco, si no están en blanco, se pueden encriptar. Pero sí, USAGE
se usa para modificar una cuenta al otorgar limitadores simples de recursos, como MAX_QUERIES_PER_HOUR
; de nuevo, esto se puede especificar utilizando también la cláusula WITH, en conjunción con GRANT USAGE
(no se agregaron privilegios) o GRANT ALL
, también puede especificar GRANT USAGE
a nivel global, nivel de base de datos, nivel de tabla, etc.
Soy nuevo en el lado administrativo de DBMS y estaba configurando una nueva base de datos esta noche (usando MySQL) cuando noté esto. Después de otorgar un privilegio a un usuario por primera vez, se crea otra concesión que se parece a
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
La documentación dice que el privilegio USAGE
significa "sin privilegios", entonces estoy deduciendo que las subvenciones funcionan jerárquicamente y tal vez un usuario debe tener algún tipo de privilegio para todas las bases de datos, por lo que esto sirve como una trampa para todos.
Tampoco entiendo por qué esta línea tiene una cláusula IDENTIFIED BY
cuando la concesión que creé no tiene una (sobre todo porque no entiendo para qué sirve la cláusula IDENTIFIED BY
).
Editar: disculpe por no haber declarado esto originalmente, las subvenciones fueron
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
Como dijiste, en MySQL USAGE
es sinónimo de "sin privilegios". Del Manual de referencia de MySQL :
El especificador de privilegio USAGE significa "sin privilegios". Se utiliza a nivel mundial con GRANT para modificar los atributos de la cuenta, como los límites de recursos o las características SSL, sin afectar los privilegios de cuenta existentes.
USAGE
es una forma de decirle a MySQL que existe una cuenta sin otorgar ningún privilegio real a esa cuenta. Simplemente tienen permiso para usar MySQL, por lo tanto USAGE
. Corresponde a una fila en la tabla `mysql`.`user`
sin privilegios establecidos.
La cláusula IDENTIFIED BY
indica que se ha establecido 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 tabla `mysql`.`user`
. Si el usuario no tiene ningún otro privilegio ON *.*
, Se le concede USAGE ON *.*
Y su hash de contraseña se muestra allí. A menudo, esto es un efecto secundario de una declaración CREATE USER
. Cuando se crea un usuario de esa manera, inicialmente no tienen privilegios, por lo que simplemente se les otorga USAGE
.
Intentaba encontrar el significado de GRANT USAGE on *.* TO
y lo encontré aquí. Puedo aclarar que GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
se otorgará cuando crea el usuario con el siguiente comando ( CREATE
):
CREATE USER ''user''@''localhost'' IDENTIFIED BY ''password'';
Cuando otorgue privilegios con GRANT
, se agregarán nuevos privilegios adicionales.