Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GBD Gestion Usuarios
GBD Gestion Usuarios
en MySQL
Disparadores
Gestin de Usuarios
en MySQL
Objetivos:
Crear cuentas de usuario en MySQL
Describir los niveles de privilegios de usuarios
en Mysql (Comandos GRANT/REVOKE)
Asignar y actualizar contraseas de usuarios
Presentar ejemplos prcticos
ndice
1. Acceso usuarios del sistema y creacin de
cuentas de usuario
2. Crear un usuario del sistema
3. Otorgar privilegios al usuario (Comando GRANT)
Nivel
Nivel
Nivel
Nivel
Global
de Base de Datos
de Tabla
de Rutina
Control de Acceso BD
Nivel 1: Comprobacin de la conexin
Desde dnde se conecta el usuario
Nombre del usuario
Consulta a tablas user (host, user, password)
Comando GRANT
GRANT ALL PRIVILEGES ON *.* TO user1@'localhost' IDENTIFIED BY user1'
WITH GRANT OPTION;
ALL PRIVILEGES: se conceden todos los privilegios a este usuario. Los posibles
privilegios: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,REFERENCES,
INDEX, ALTER, CREATE_TMP_TABLE, LOCK_TABLES,
CREATE_VIEW,SHOW_VIEW, CREATE_ROUTINE, ALTER_ROUTINE, EXECUTE
y GRANT.
ON: los objetos a los que se aplican los privilegios, el formato es
base_de_datos.tabla, *.* Otros ejemplos: ventas.*, contabilidad.polizas,
TO: el usuario al que se le conceden los privilegios, el formato es
usuario@'equipo. Otros ejemplos: user1@'%', sergio@'192.168.10.132
IDENTIFIED BY: la contrasea se indica en esta parte y se escribe en texto
plano.
WITH GRANT OPTION: esta ltima parte es opcional, e indica que el usuario en
cuestin puede a la vez otorgar privilegios a otros usuarios
REQUIRE: Opciones de seguridad en el acceso relacionadas con SSL
Comando REVOKE
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]]
...
Niveles Privilegios
Global
De Base de Datos
De Tabla
De Columna
De Rutina
GRANT all privileges on cdcol.cds to user1@'localhost' identified by 'user1' with grant option;
REVOKE all privileges on cdcol.cds FROM user1@'localhost' identified by 'user1';
Slo los usuarios tales como root con acceso de modificacin para la base de datos mysql
puede cambiar la contrasea de otro usuario
Puede usar el comando GRANT USAGE globalmente (ON *.*) para asignar una contrasea
a una cuenta sin afectar los permisos actuales de la cuenta
Disparadores (Triggers) I
Son acciones que pueden ejecutarse de manera
automtica cuando determinado evento ocurre en una
tabla.
Al crear un disparador, se le asocia con una tabla, y
se lo programa para que se active antes o despus
de la ejecucin de una sentencia del tipo INSERT,
DELETE o UPDATE.
Se pueden utilizar para realizar logs de Tablas
Bloquean las tablas afectadas de la Base de Datos
Disparadores (Triggers) II
CREATE TRIGGER nombre_disp
{BEFORE|AFTER} {INSERT|UPDATE|DELETE}
ON nombre_tabla FOR EACH ROW
sentencias_disparador
Ejemplos Disparadores I
CREATE TABLE MiTabla
(
id int NOT NULL AUTO_INCREMENT,
fecha timestamp default current_timestamp on update current_timestamp,
id_registro int,
anterior_nombre varchar(50),
nuevo_nombre varchar(50),
usuario varchar(40),
modificado datetime,
PRIMARY KEY(id)
) ENGINE = InnoDB;
CREATE TABLE controlMiTabla
(
id int NOT NULL AUTO_INCREMENT,
id_registro_control int,
anterior_nombre_control varchar(50),
nuevo_nombre_control varchar(50),
usuario varchar(40),
modificado datetime,
PRIMARY KEY(id)
) ENGINE = InnoDB;
DELIMITER //
CREATE TRIGGER `trigger1_insert` AFTER INSERT ON `miTabla` FOR EACH ROW BEGIN
INSERT INTO controlMiTabla (id_registro_control, anterior_nombre_control,
nuevo_nombre_control, usuario
modificado )
VALUES (new.id_registro, new.anterior_nombre, new.nuevo_nombre, CURRENT_USER(), NOW() );
END//
Gestin de Bases de Datos
Ejemplos Disparadores II
DELIMITER //
CREATE TRIGGER `trigger1_insert2` BEFORE INSERT ON `miTabla` FOR EACH ROW BEGIN
IF new.id_registro > 3 THEN
SET new.id_registro =999;
INSERT INTO controlMiTabla (id_registro_control, anterior_nombre_control,
nuevo_nombre_control, usuario , modificado )
VALUES (new.id_registro, new.anterior_nombre, new.nuevo_nombre,
CURRENT_USER(), NOW() );
END IF;
END//
DELIMITER //
CREATE TRIGGER `trigger1_update1` AFTER INSERT ON `miTabla` FOR EACH ROW BEGIN
UPDATE controlMiTabla SET anterior_nombre_control=NEW.anterior_nombre,
nuevo_nombre_control=NEW.nuevo_nombre
WHERE id_registro_control=NEW.id_registro;
END//
Ejemplos Disparadores IV
DELIMITER //
CREATE TRIGGER `trigger1_delete1` AFTER INSERT ON `miTabla` FOR EACH ROW
BEGIN
DELETE FROM controlMiTabla WHERE id_registro_control=NEW.id_registro;
END//
Ejemplos Disparadores V
DELIMITER //
CREATE TRIGGER `trigger1_delete1` BEFORE DELETE ON `miTabla` FOR EACH
ROW BEGIN
INSERT INTO controlMiTabla (id_registro_control, anterior_nombre_control,
nuevo_nombre_control, usuario , modificado )
VALUES (OLD.id_registro, OLD.anterior_nombre, OLD.nuevo_nombre,
CURRENT_USER(), NOW() );
END//