Está en la página 1de 5

Ingeniería en Desarrollo de

Software

Felipe de Jesús Gutiérrez García
(Al12535104)

6to Cuatrimestre
José Alfredo Almaraz Romero
Facilitador

Administración de Base de datos
Unidad 2
Operaciones básicas
Actividad 3
Data Control Language (DCL)


Durante el desarrollo de esta actividad, se hará uso de las cuentas de usuario de MySQL
definiendo qué usuarios se pueden conectar al servidor, y qué tareas pueden hacer cuando
estén conectados.
El propósito de esta actividad es usar la sentencia GRANT y REVOQUE para la asignación y eliminación
de privilegios de acceso a usuarios.
Ahora, especificarás como usarías los comandos de control de lenguaje GRANT, REVOKE en la base de
datos creada en la Actividad 1 y utilizada en la Actividad 2, para lo cual realiza lo siguiente:
• El administrador establecerá los usuarios que se pueden conectar a MySQL y con qué privilegios.
• Disponemos de dos comandos para ello:

 GRANT: crea un cuenta MySQL y especifica privilegios.
 REVOKE: borra privilegios de una cuenta existente.

• También existe la posibilidad de:

 Modificar directamente las tablas de permisos.
 Usar los scripts mysqlaccess y mysql_setpermission.

GRANT y REVOKE afectan cuatro tablas:
– user: usuarios que pueden conectarse al servidor y sus privilegios
globales.

 db: privilegios a nivel de bbdd.
 tables_priv: privilegios a nivel de tabla.
 columns_priv: privilegios a nivel de columna.
 Existe una quinta tabla (host) pero no está afectada por los comandos GRANT o REVOKE.

1.- Especifica con una línea de comandos como escribirías el comando GRANT en la base de datos que
tenemos agregando permisos para una situación ficticia.
GRANT ALL PRIVILEGES ON *.* TO user1@'localhost' IDENTIFIED BY ‘user1' WITH GRANT
OPTION;

GRANT: Comando que permite 'conceder' privilegios a un usuario.

Crear un nuevo usuario y establecer privilegios:
 GRANT privileges (columns)
o ON what
o TO account IDENTIFIED BY 'password'
o WITH grant
o REQUIRE encryption requirements;

 privileges: privilegios que se le asignaran a la cuenta (SELECT,
 SHUTDOWN, ALL PRIVILEGES...)
 columns: (opcional) SELECT, INSERT y UPDATE.
 what: nivel al que serán aplicados los privilegios. A nivel de bbdd,
 tabla o columna (ON db_name.*, ON *.*)
 account: usuario y host ('user_name'@'host_name'). Se pueden usar wildcards:
user_name@'144.155.166.%'
 password: (opcional) contraseña de la cuenta.
 WITH: (opcional) permite dar permisos a otros usuarios.
 REQUIRE: (opcional, MySQL 4.0.0) establece que la conexión debe estar securizada por SSL.

La forma más sencilla de configurar una cuenta es hacerse las siguientes preguntas:

 ¿Quién se puede conectar y desde dónde?

o Limitar a un sólo host:
 GRANT ALL ON hospitaldb.* TO 'felipe'@'localhost' IDENTIFIED BY 'administrador';
 GRANT ALL ON hospitaldb.* TO 'josé alfredo'@'ares.mars.net' IDENTIFIED BY
'facilitador';
o Permitir conexiones desde todas partes:
 GRANT ALL ON hospitaldb.* TO 'enrique'@'%' IDENTIFIED BY 'diamante';
o Permitir conexiones desde ciertas redes:
 GRANT ALL ON hospitaldb.* TO 'maría'@'%.snake.net' IDENTIFIED BY 'turquesa';
 GRANT ALL ON hospitaldb.* TO 'josé'@'192.168.128.3' IDENTIFIED 'agua';
 GRANT ALL ON hospitaldb.* TO 'adriana'@'192.168.128.%' IDENTIFIED BY 'nieve';

 ¿Qué tipo de acceso debería tener la cuenta?

o CREATE TEMPORARY TABLES: Crear tablas temporales.
o EXECUTE: Ejecutar procedimientos almacenados (MySQL 5.0.0)
o FILE: Leer y escribir archivos en el servidor.
o GRANT OPTION: Dar los privilegios a otras cuentas.
o LOCK TABLES: Bloquear tablas.
o PROCESS: Ver información sobre la ejecución de threads en el servidor.
o RELOAD: Recargar la tabla de privilegios o flush de logs y cachés.
o REPLICATION CLIENT: Preguntar sobre localización de servidor master y slave.
o REPLICATION SLAVE: Actuar como una réplica de servidor slave.
o SHOW DATABASES: Mostrar bbdd.
o SHUTDOWN: Parar el servidor.
o SUPER: Matar threads y otras operaciones de supervisor.
o ALTER: Modificar tablas e índices.

 ¿Se requiere que la conexión sea segura?

 Hay diversos tipos de privilegios:

o CREATE: Crear bbdd y tablas.
o DELETE: Borrar registros de una tabla.
o DROP: Eliminar bbdd y tablas.
o INDEX: Crear o eliminar índices.
o INSERT: Insertar nuevos registros en tablas.
o REFERENCES: (reservado para futuras versiones).
o SELECT: Consultar registros en tablas.
o UPDATE: Modificar registros de tablas.
o ALL: Todas las operaciones (excepto GRANT); sinónimo de ALL PRIVILEGES.
o USAGE: Privilegio especial "no privilegios".



 ¿Debería poder administrar privilegios?

Se pueden establecer privilegios a diferentes niveles.
 Se usa la cláusula ON:
o ON *.* privilegios globales, todas las bbdd, todas las tablas.
o ON * privilegios globales si no se ha seleccionado bbdd sino privilegios en la bbdd actual.
o ON db_name.* privilegios a nivel de bbdd; todas las tablas de la bbdd.
o ON db_name.tbl_name privilegios a nivel de tabla; todas las columnas en la tabla.
o ON tbl_name privilegios a nivel de tabla; todas las columnas en la tabla por defecto

 ¿Se requiere que la conexión sea segura?

o A partir de MySQL 4, se pueden securizar las conexiones usando SSL.
o Tiene un coste en tiempo de proceso.
o Se puede obligar el acceso seguro:
 GRANT ALL ON hospitaldb.* TO 'eladio'@'%.snake.net' IDENTIFIED BY 'flint'
REQUIRE SSL;
o Incluso requerir un certificado X509:
 GRANT ALL ON hospitaldb.* TO 'eladio'@'%.snake.net' IDENTIFIED BY 'flint'
REQUIRE X509;

 ¿Deberían limitarse el consumo de recursos?

o A partir de MySQL 4.0.2, se pueden poner límites:
o Número de veces por hora que se pueden hacer conexiones.
o Consultas o actualizaciones por hora.
 GRANT ALL ON hospitaldb.* TO 'juan'@'localhost' IDENTIFIED BY 'pirata'
 WITH
 MAX_CONNECTIONS_PER_HOUR 10
 MAX_QUERIES_PER_HOUR 200
 MAX_UPDATES_PER_HOUR 50;
o FLUSH USER_RESOURCES o FLUSH PRIVILEGES resetean los valores contados a 0.



2.- Especifica como utilizarías el comando REVOKE en esta misma base de datos.
REVOKE: Permite revocar privilegios y eliminar usuarios
 REVOKE privileges (columns) ON what FROM account;
 what: debe coincidir con el usuario y el host
 Se pueden dar permisos y luego revocar algunos:
o GRANT ALL ON hospitaldb.* TO 'felipe'@'localhost' IDENTIFIED BY 'administrador';
o REVOKE DELETE, UPDATE ON hospitaldb.* FROM 'felipe'@'localhost';

 REVOKE no elimina totalmente una cuenta, para eliminarla:
• % mysql -u root
• mysql> USE mysql;
• mysql> DELETE FROM user
• -> WHERE User = 'maría' and Host = '%.snake.net';
• mysql> FLUSH PRIVILEGES;

3.-Escribe las respuestas en un procesador de textos explicando cada palabra que uses en estos
comandos y cuál es el objetivo de las mismas.

FUENTES DE CONSULTA:
http://www.laigu.net/wp-content/uploads/2009/08/Administraci%C3%B3n-MySQL.pdf
http://www.personal.fi.upm.es/~lmengual/GESTION_BD/GBD_GESTION_USUARIOS.pdf