Privilegios y Usuarios en MySQL
Creación, edición y eliminación de usuarios y sus privilegios
Los privilegios son permisos que determinan el tipo (alcance) de acceso de un usuario a las bases de datos (y su contenido). A continuación se muestran los distintos tipos de privilegios.
Tipos de privilegios:
Globales: Se aplica a todas las bases de datos del servidor.
ON *.*
Base de datos: Se aplica a bases de datos.
ON [basededatos].*
Tabla: Se aplica a tablas.
ON [basededatos].[tabla]
Columna: Se aplica a columnas.
[privilegio]([campo])
Rutina: Se aplica a procedimientos almacenados.
USUARIO
Para crear un usuario es necesario crearlo mediante el comando CREATE USER para después asignar privilegios al usuario.
CREAR USUARIO
CREATE USER [usuario]@"localhost" IDENTIFIED BY "[contraseña]"
MODIFICAR CONTRASEÑA DE USUARIO
SET PASSWORD FOR [nombre_usuario] = PASSWORD("[nuevo contraseña]")
ELIMINAR USUARIO
Para eliminar un usuario MySQL dispone del comando DROP USER.
DROP USER [usuario]
Nota: Es recomendable revocar los privilegios del usuario antes de eliminar el usuario.
PRIVILEGIOS
Nota: Los nombres de usuario están limitados a 16 caracteres, a diferencia de la contraseña que no tiene ningún límite.
MOSTRAR PRIVILEGIOS
Mostrar los privilegios de un usuario
SHOW GRANTS
ASIGNAR PRIVILEGIOS A USUARIO:
GRANT [privilegio] (campo)[privilegio] (campo)ON [tabla]|*|*.*|[base_de_datos.*],TO [usuario] IDENTIFIED BY ["contraseña"][usuario] IDENTIFIED BY ["contraseña"]
ACTUALIZAR PRIVILEGIOS
FLUSH PRIVILEGES
Ejemplo asignando todos los privilegios:
GRANT ALL PRIVILEGES ON [tabla]|*|*.*|[base_de_datos.*] TO "[usuario]"@"localhost"
Ejemplo asignando un privilegio determinado:
GRANT SELECT ON usuarios TO manel
REVOCAR PRIVILEGIOS
Para poder revocar un privilegio asignado hacemos uso del comando REVOKE
REVOKE [privilegio]([campo])[privilegio]([campo])ON [tabla|*|*.*|[basededatos.*],FROM [usuario],[usuario2]
Ejemplo de revoque de privilegios INSERT Y UPDATE en todas las tablas de la base de datos blogdb para el usuario manel.
REVOKE INSERT,UPDATE ONblogdb.* FROM manel
LÍMITES AL USUARIO
MySQL dispone de varias opciones para poder limitar acciones al usuario
GRANT ALL ON [basedatos.*] TO [usuario]@"localhost"IDENTIFIED BY "contraseña"WITH MAX_QUERIES_PER_HOUR 100MAX_UPDATE_PER_HOUR 50MAX_CONNECTIONES_PER_HOUR 20MAX_USER_CONNECTIONES 5
Para poder modificar límites ya establecidos:
GRANT USAGE ON [basedatos.*] TO [usuario]@"localhost"WITH MAX_QUERIES_PER_HOUR 50MAX_UPDATE_PER_HOUR 30MAX_CONNECTIONES_PER_HOUR 10MAX_USER_CONNECTIONES 3
Para reiniciar los distintos límites:
GRANT USAGE ON [basedatos.*] TO [usuario]@"localhost"WITH MAX_QUERIES_PER_HOUR 10
Para reinciar todos los límites(2 comandos):
FLUSH USER_RESOURCES
O recargando los privilegios de las tablas
FLUSH PRIVILEGES
Para poder comentar es necesario iniciar sesión