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 ON
blogdb.* 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 100
MAX_UPDATE_PER_HOUR 50
MAX_CONNECTIONES_PER_HOUR 20
MAX_USER_CONNECTIONES 5
Para poder modificar límites ya establecidos:
GRANT USAGE ON [basedatos.*] TO [usuario]@"localhost"
WITH MAX_QUERIES_PER_HOUR 50
MAX_UPDATE_PER_HOUR 30
MAX_CONNECTIONES_PER_HOUR 10
MAX_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