lunes, 2 de mayo de 2016

Alta de usuarios en MySQL (|II)

Esta es una actualización de mi chuleta, y para el que lo necesite



A estas alturas ya sabemos que podemos definir los permisos que un usuario tiene a una base de datos (o tabla, o donde sea) usando GRANT; hay muchos tipos de privilegios pero los los más típicos que yo me encuentro son estos
  • SELECT: acceso sólo de lectura
  • INSERT: se permiten hacer inserts en la(s) tabla(s) seleccionada(s)
  • UPDATE: se permiten hacer updates en la(s) tabla(s) seleccionada(s)
  • DELETE: se permiten hacer delete de las filas que hay en la(s) tabla(s) seleccionada(s)
  • USAGE: no se permite nada, es un sinónimo para "sin privilegios".
  • ALL PRIVILEGES: todos los privilegios (no sólo incluye estos cuatro; aquí podéis encontrar un listado más completo)
Y para qué todo esto? Pues porque quiero actualizar ms notas

Esto es suficiente para dar de alta un nuevo usuario

 GRANT xxxxx on database.table to 'user'@'host' identified by 'password';

donde xxxxx son los permisos de los que os hablaba arriba.
Si además, queremos limitar el número de conexiones de ese usuario, añadimos al final la limitación, y quedaría de esta manera

 GRANT xxxxx ON database.table TO 'user'@'host' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS #;

El cambio de contraseña para un usuario, queda así

SET PASSWORD FOR 'user'@'host' = PASSWORD('yyyyyyyyyyyy');

Y qué hago si quiero saber qué privilegios tiene un usario, sobre qué y cómo esan definidos? Pues con este comando, que últimamente estoy utilizando bastante

SHOW GRANT FOR 'user'@'host';

que nos devolverá todos los permisos de ese usuario concreto; si  no le pasas el usuario (sólo "SHOW GRANT") te devolverá los privilegios del usuario con el que estás conectado.