Seguridad
La seguridad, uno de los mayores retos del siglo XXI, en todos los aspectos, el social, el económico (ay, también el económico) y claro está, también el informático.
MySQL proporciona una gran cantidad de elementos de seguridad, mismos que, claro está, están a nuestra total disposición. Una de estas bendiciones de seguridad son las garantías de uso para diferentes usuarios. Podemos definir varios usuarios para nuestras bases de datos, y a todos y cada uno podemos garantizarles, negarles o revocarles ciertos privilegios para el manejo de nuestras bases de datos.
Una sana recomendación es, precisamente, permitir el “abuso” total para con nuestras bases, única y exclusivamente al usuario root (que vendría a ser algo así como el superadministrador).
Para garantizar los privilegios a un usuario específico, tenemos la sentencia GRANT, que es precisamente la que le dice a MySQL si tal o cual usuario tiene o no tiene los privilegios para hacer algo con nuestras bases de datos. Ese algo podría ser la habilidad de hacer consultas (SELECT), la habilidad de actualizar o modificar (UPDATES), la habilidad de insertar información (INSERT) o la habilidad de borrar (DELETE).
La Instrucción GRANT es utilizada una vez que iniciamos una sesión MySQL con el usuario ROOT, es decir, cuando el comando del sistema escribimos lo siguiente:
mysql –u root
Una vez dentro de la sesión con el usuario raíz o superadministrador, debemos utilizar la sentencia GRANT de la siguiente manera:
GRANT privilegio_a_otorgar ON nombre_base_de_datos TO usuario@localhost IDENTIFIED BY password
Posteriormente podemos probar estos privilegios entrando a otra sesión de MySQL con el usuario al cual le hemos permitido los privilegios e intentar hacer algo que no le hemos permitido a dicho usuario.
Un ejemplo, una vez estemos dentro del usuario ROOT:
GRANT SELECT ON prueba.* TO usuario1@localhost INDENTIFIED BY ‘dejameentrar’;
Para probar esto debemos salirnos de la sesión ROOT simplemente digitando EXIT en la línea de comandos de MySQL y entrando luego al usuario específico digitando lo siguiente:
mysql –u usuario1 –p
De esta manera hemos iniciado una sesión con el usuario USUARIO1. La sentencia GRANT anterior le dice a MySQL:
Garantice el privilegio de SELECCIONAR EN prueba EN usuario@localhost IDENTIDICADO POR ‘dejameentrar’;
La directiva –p que hemos especificado al entrar en la sesión usuario1 hace que MySQL nos pida una contraseña antes de entrar, recordemos que la contraseña especificada fue ‘dejameentrar’, así que escribimos precisamente dejameentrar al momento de entrar a la sesión.
Una vez dentro, al estar en la línea de comandos de MySQL (mysql>) podemos intentar, por ejemplo, algo como esto:
DELETE FROM prueba;
Lo que MySQL nos dirá es que hay un error, un error 1142 para ser más exactos, cada vez que intentemos hacer algo para lo que nuestro usuario no tiene usuario (recuerden por favor que usuario1 sólo tiene permiso para hacer consultas (SELECT).
Finalmente, podemos solicitarle a MySQL los privilegios de un usuario específico por medio de la sentenciaSHOW GRANTS, tal y como lo muestra la imagen:
Como verán, esta es una herramienta poderosa en cuanto a la seguridad de nuestras bases de datos se refiere, sin embargo, hay otras tantas cosas que ver. Pero eso será más adelante. Hasta Pronto