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 user_name@'144.155.166.%'
pueden
usar
wildcards:
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
o 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'; Permitir conexiones desde todas partes: GRANT ALL ON hospitaldb.* TO 'enrique'@'%' IDENTIFIED BY 'diamante'; 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 o o o o o o o o o o o o
CREATE TEMPORARY TABLES: Crear tablas temporales. EXECUTE: Ejecutar procedimientos almacenados (MySQL 5.0.0) FILE: Leer y escribir archivos en el servidor. GRANT OPTION: Dar los privilegios a otras cuentas. LOCK TABLES: Bloquear tablas. PROCESS: Ver información sobre la ejecución de threads en el servidor. RELOAD: Recargar la tabla de privilegios o flush de logs y cachés. REPLICATION CLIENT: Preguntar sobre localización de servidor master y slave. REPLICATION SLAVE: Actuar como una réplica de servidor slave. SHOW DATABASES: Mostrar bbdd. SHUTDOWN: Parar el servidor. SUPER: Matar threads y otras operaciones de supervisor. ALTER: Modificar tablas e índices.
¿Se requiere que la conexión sea segura?
Hay diversos tipos de privilegios: o o o o o o o o o o
CREATE: Crear bbdd y tablas. DELETE: Borrar registros de una tabla. DROP: Eliminar bbdd y tablas. INDEX: Crear o eliminar índices. INSERT: Insertar nuevos registros en tablas. REFERENCES: (reservado para futuras versiones). SELECT: Consultar registros en tablas. UPDATE: Modificar registros de tablas. ALL: Todas las operaciones (excepto GRANT); sinónimo de ALL PRIVILEGES. 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 o o
o
A partir de MySQL 4, se pueden securizar las conexiones usando SSL. Tiene un coste en tiempo de proceso. Se puede obligar el acceso seguro: GRANT ALL ON hospitaldb.* TO 'eladio'@'%.snake.net' IDENTIFIED BY 'flint' REQUIRE SSL; 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 o o
o
A partir de MySQL 4.0.2, se pueden poner límites: Número de veces por hora que se pueden hacer conexiones. 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; 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
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.