Ejercicio privilegios

7
Bases de Datos Sección 403. Práctica Creación de usuarios y privilegios Conéctate a Mysql Server utilizando el usuario root Verifica que ha iniciado con el usuario root con el comando select user(); Ahora digita show databases, para que ver a cuantas bases de datos tiene acceso el usuario root Creación de usuarios La sintaxis para la creación de usuarios es la siguiente. CREATE USER 'nombre_usuario'@'servidor' IDENTIFIED BY 'clave_usuario'; Donde: Nombre_usuario : Será el nombre de usuario el cual elijamos para el fin que deseemos. Servidor: Para el caso de nuestras pruebas locales elegiremos localhost, a menos que se tenga un servidor remoto con un nombre en específico Identified by : Es la clave que identifica al usuario creado. La cual es encriptada por el sistema. Ejemplo: Crear un usuario llamado ´gerente´ utilizando la clave „123456‟ CREATE USER 'gerente'@'localhost' IDENTIFIED BY '123456'; Para verificar los permisos de usuario y mostrar el password encriptado utilizamos la siguiente sentencia: SHOW GRANTS FOR ‘gerente’@’localhost’ 1

Transcript of Ejercicio privilegios

Page 1: Ejercicio privilegios

Bases de Datos Sección 403.

Práctica Creación de usuarios y privilegios

Conéctate a Mysql Server utilizando el usuario root

Verifica que ha iniciado con el usuario root con el comando select user();

Ahora digita show databases, para que ver a cuantas bases de datos tiene acceso el usuario root

Creación de usuarios

La sintaxis para la creación de usuarios es la siguiente.

CREATE USER 'nombre_usuario'@'servidor' IDENTIFIED BY 'clave_usuario';

Donde: Nombre_usuario : Será el nombre de usuario el cual elijamos para el fin que deseemos. Servidor: Para el caso de nuestras pruebas locales elegiremos localhost, a menos que se tenga un servidor remoto con un nombre en específico Identified by : Es la clave que identifica al usuario creado. La cual es encriptada por el sistema. Ejemplo: Crear un usuario llamado ´gerente´ utilizando la clave „123456‟ CREATE USER 'gerente'@'localhost' IDENTIFIED BY '123456'; Para verificar los permisos de usuario y mostrar el password encriptado utilizamos la siguiente sentencia: SHOW GRANTS FOR ‘gerente’@’localhost’

Ahora salir del usuario root con la sentencia exit; y volver al promt del sistema

1

Page 2: Ejercicio privilegios

Ahora ingresar con el usuario gerente que acabamos de crear con la siguiente sentencia: mysql –u gerente –p

Verifica que has iniciado sesión con el usuario gerente con la sentencia select user();

Verifica a cuantas bases de datos tiene acceso ese usuario con show databases;

Como puede ver este usuario no posee ningún permiso sobre las bases de datos creadas en mysql.

CREACION DE USUARIOS PARA ACCESO REMOTOAl crear un usuario, se define el contexto desde el que se puede conectar, por ejemplo 'carlos'@'localhost' solamente se puede conectar desde el mismo servidor de la base de datos, para crear usuarios que se puedan conectar desde varias máquinas, se puede crear un usuario por cada máquina o usar el comodín '%', el usuario 'carlos'@'%' se podría conectar desde cualquier máquina, y el usuario 'gerentelan'@'10.0.25.%' se podría conectar desde máquinas con una dirección IP comprendida entre 10.0.25.1 y 10.0.25.255. Ejemplo:El usuario puede acceder desde cualquier maquina comprendida entre 10.0.25.1 y 10.0.25.255 CREATE USER 'gerentelan'@'10.0.25.%' IDENTIFIED BY '123456';

Para poder acceder con usuarios remoto se utiliza la siguiente sentenciamysql –u gerentelan –h 10.0.25.5 –p

En la sintaxis vemos un nuevo parámetro –h, el cual indica el servidor al cual se desea conectar, para acceso local se utiliza –h localhost aunque se puede obviar. En el ejemplo se intenta acceder a la maquina con ip 10.0.25.5

Otorgar Permisos Sobre Bases de Datos

USE Clientes; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON Clientes TO 'gerente'@'localhost';

Con el ejemplo anterior primero se ha seleccionado la base de datos llamada Clientes, luego con la palabra GRANT estamos otorgando permisos, seguido de ellos describimos los modificadores que podrá tener sobre la base de datos, si queremos concederle todos los permisos entonces en lugar de listarlos simplemente lo sustituimos por la palabra ALL, tal como se muestra a continuación.

2

Page 3: Ejercicio privilegios

USE Clientes GRANT ALL ON Clientes TO 'gerente'@'localhost';

Con esta última opción se está asignando al usuario los permisos listados sobre todas las tablas que contenga la base de datos, pero esto en alguna ocasiones no puede ser muy recomendable ya que no siempre se desea crear usuarios que posean total control sobre la base de datos Ahora salir y volver a conectarse al monitor de mysql nuevamente y verifica si tienes acceso a la base de datos y a las tablas Todos los permisos se pueden otorgar y quitar con el usuario root, por lo que a partir de esta parte en todas las sentencias para otorgar y quitar privilegios, se deberá cambiar a root para manejar los permisos y a gerente para verificar los cambios.

Remover permisos sobre bases de datos

La sentencia REVOKE sirve para quitar o remover los permisos otorgados mediante GRANT. Si los permisos creados fueron de modo global sin especificar tablas en el sistema deberá de usarse la siguiente sintaxis para quitar los permisos.

Use Clientes; REVOKE SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON Clientes FROM 'gerente'@'localhost' ;

Si en la definición de los permisos se utilizó * entonces se debe remover los permisos del mismo modo indicando que será en todas las tablas de la base de datos en cuestión.

Use Clientes;REVOKE SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON Cliente.* FROM 'gerente'@'localhost' ;

Nuevamente el usuario no tendrá permisos sobre el objeto anterior.

Otorgar permisos sobre tablas especificas de una base de datos Para limitar o administrar el acceso de los usuarios a ciertas tablas podemos utilizar siempre la instrucción GRANT pero en la definición del objeto sobre el cual delimitaremos los permisos especificamos las tablas en cuestión. Tal y como se muestra a continuación.

USE Clientes;GRANT SELECT, INSERT, UPDATE, DELETE ON Clientes.personas TO 'gerente'@'localhost';

Del mismo modo para poder agregar más, los mismos permisos en más de una tabla y delimitar consultas máximas por hora, conexiones máximas por hora y otros delimitadores se puede basar en el siguiente código:

GRANT SELECT,INSERT,UPDATE,DELETE ON Clientes.personas TO 'gerente'@'localhost' IDENTIFIED BY '123456' WITH MAX_QUERIES_PER_HOUR 20 MAX_UPDATES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 20;

Con la definición anterior se estableció un máximo de consultas de 20 consultas por hora, además máximo de 10 update por hora, máximo de 5 conexiones al servidor en menos de

3

Page 4: Ejercicio privilegios

una hora, y máximo de conexiones de usuario de 20. Con esto podemos delimitar mas el acceso del usuario a la BD y en este caso a la tabla en especifico, el condicionante IDENTIFIED BY puede ser incluido en las otorgaciones anteriores aunque no es necesario.

Remover permisos sobre tablas específicas de una base de datos Para eliminar los permisos otorgados anteriormente se utilizará una sintaxis similar.

REVOKE SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON Clientes.personas FROM 'gerente'@'localhost' IDENTIFIED BY '123456' ;

Cabe recordar que no es necesario especificar el password mediante IDENTIFIED BY, esto es indiferente el agregarlo o no. El comando de igual forma funcionará. Revisar ahora los resultados actualizados.

Remover Todos los permisos de forma general.

Para eliminar privilegios de modo global se puede utilizar la siguiente sintaxisREVOKE ALL PRIVILEGES, GRANT OPTION FROM 'gerente'@'localhost';

Renombrar usuarios. Para renombrar un usuario se utiliza la sintaxis siguiente

RENAME USER 'usuario_anterior'@'nombre_servidor' TO 'usuario_nuevo'@'nombre_servidor'

Para realizar un ejemplo práctico renombrar el usuario llamado gerente identificándolo como gerente_general

RENAME USER 'gerente'@'localhost' TO 'gerente_general'@'localhost'

Modificar Contraseñas de usuarios. Dentro de un sistema de seguridad no debe de faltar el poder cambiar la contraseña de los usuarios de forma periódica, esto lo pones en práctica en tu correo electrónico y en otras contraseñas para diferentes fines. Por lo tanto es indispensable en cada inicio de sesión ya que se puede poner en riesgo la seguridad del sistema y por lo tanto la seguridad laboral dentro de una empresa. Para modificar la contraseña o clave de un usuario se utiliza la siguiente sintaxis:

SET PASSWORD FOR 'gerente_general'@'localhost' = PASSWORD('654321');

En donde se especifica el usuario a modificar luego con la palabra PASSWORD se debe asegurar que el password a introducir sea cifrado en pase a la función PASSWORD que viene integrada en MySQL Server.

Eliminar Usuarios del sistema. Para eliminar usuarios del sistema basta con especificar DROP USER seguido del usuario a eliminar.

DROP USER 'gerente_general'@'localhost'

Ejercicio:

4

Page 5: Ejercicio privilegios

Crear los usuarios con los siguientes permisos 1. Usuario: user1

Permisos: Permite crear tablas en la base de datos Cliente (la cual debes crear, con la tabla personas cuyos campos serán idpersona, nombre y domicilio y la tabla ciudades con los campos id_ciudad, nombre, capital), permite solo realizar consultar a la tabla personas

2. Usuario: user2

Permisos: Permite borrar tablas en la base de datos Clientes, permite solo realizar actualizaciones a la tabla ciudades e insertar datos en la tabla ciudades

3. Usuario: user3

Permisos: tiene todos los privilegios sobre la tabla ciudades de la BD clientes

4. Pregunta a tu compañero la ip de su computadora y créale un usuario que tenga permisos para consultar, eliminar, insertar y modificar datos en la tabla personas de la base de datos clientes para que pruebe el usuario por acceso remoto

Investigar ¿Qué es un trigger? Ventajas y desventajas Sintaxis Presentar un ejemplo con la base de datos Clientes en Mysql

Definir los id de las tablas de tipo numérico y los demás campos de tipo varchar, la longitud la eliges tú.

5