You are on page 1of 5

Ingeniera en Desarrollo de

Software

Felipe de Jess Gutirrez Garca
(Al12535104)

6to Cuatrimestre
Jos Alfredo Almaraz Romero
Facilitador

Administracin de Base de datos
Unidad 2
Operaciones bsicas
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
estn conectados.
El propsito de esta actividad es usar la sentencia GRANT y REVOQUE para la asignacin y eliminacin
de privilegios de acceso a usuarios.
Ahora, especificars como usaras 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.

Tambin 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 lnea de comandos como escribiras el comando GRANT en la base de datos que
tenemos agregando permisos para una situacin 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 sern 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) contrasea de la cuenta.
WITH: (opcional) permite dar permisos a otros usuarios.
REQUIRE: (opcional, MySQL 4.0.0) establece que la conexin debe estar securizada por SSL.

La forma ms sencilla de configurar una cuenta es hacerse las siguientes preguntas:

Quin se puede conectar y desde dnde?

o Limitar a un slo 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 'mara'@'%.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 debera 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 informacin sobre la ejecucin de threads en el servidor.
o RELOAD: Recargar la tabla de privilegios o flush de logs y cachs.
o REPLICATION CLIENT: Preguntar sobre localizacin de servidor master y slave.
o REPLICATION SLAVE: Actuar como una rplica 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 conexin 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); sinnimo de ALL PRIVILEGES.
o USAGE: Privilegio especial "no privilegios".



Debera poder administrar privilegios?

Se pueden establecer privilegios a diferentes niveles.
Se usa la clusula 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 conexin 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;

Deberan limitarse el consumo de recursos?

o A partir de MySQL 4.0.2, se pueden poner lmites:
o Nmero 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 utilizaras 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 = 'mara' 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 cul 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

You might also like