SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
LUIS MENGUAL (c)
Gestión de Bases de Datos
Gestión de Usuarios
en MySQL
LUIS MENGUAL (c)
Gestión de Bases de Datos
• Crear cuentas de usuario en MySQL
• Describir los niveles de privilegios de usuarios
en Mysql (Comandos GRANT/REVOKE)
• Asignar y actualizar contraseñas de usuarios
• Presentar ejemplos prácticos
Objetivos:
Gestión de Usuarios
en MySQL
LUIS MENGUAL (c)
Gestión de Bases de Datos
Índice
1. Acceso usuarios del sistema y creación de
cuentas de usuario
2. Crear un usuario del sistema
3. Otorgar privilegios al usuario (Comando GRANT)
Nivel Global
Nivel de Base de Datos
Nivel de Tabla
Nivel de Rutina
4. Revocación de privilegios de usuario (Comando
Revoke)
5. Cambiar contraseña de cuentas de usuario
LUIS MENGUAL (c)
Gestión de Bases de Datos
Control de Acceso BD
• Nivel 1: Comprobación de la conexión
– Desde dónde se conecta el usuario
– Nombre del usuario
– Consulta a tabla “user” (host, user, password)
• Nivel 2: Comprobación de privilegios
– Por cada petición en la conexión se comprueba si hay
privilegios para efectuarla
– Consulta a tablas user, db, tables_priv, colums_priv,
procs_priv
LUIS MENGUAL (c)
Gestión de Bases de Datos
Usuarios del sistema (II)
SELECT * from mysql.user;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Usuarios del sistema (I)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Comando GRANT
Comando que permite 'conceder' privilegios a un usuario
• 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 contraseña 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
cuestión puede a la vez otorgar privilegios a otros usuarios
• REQUIRE: Opciones de seguridad en el acceso relacionadas con SSL
GRANT ALL PRIVILEGES ON *.* TO user1@'localhost' IDENTIFIED BY ‘user1'
WITH GRANT OPTION {REQUIRE (…)};
LUIS MENGUAL (c)
Gestión de Bases de Datos
Crear un usuario (I)
GRANT all privileges on *.* to user1@'localhost' identified by 'user1' with grant option;
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Crear un usuario (II)
SELECT * from mysql.user;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Crear un usuario (III)
SELECT * from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Comando REVOKE
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]]
. . .
ON [object_type] {tbl_name | * | *. * | db_name. *}
FROM user [, user] . . .
• Permite revocar los privilegios del usuario otorgados con el
comando GRANT
• La revocación se hará al mismo nivel de privilegios otorgados
con el comando GRANT
LUIS MENGUAL (c)
Gestión de Bases de Datos
Revocar privilegios (I)
REVOKE all privileges on *.* FROM user1@'localhost' identified by 'user1';
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Revocar privilegios (II)
SELECT * from mysql.user;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Revocar privilegios (III)
SELECT * from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Eliminar un usuario (I)
DROP USER user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Eliminar un usuario (II)
SELECT * from mysql.user
LUIS MENGUAL (c)
Gestión de Bases de Datos
Niveles Privilegios
• Global
• De Base de Datos
• De Tabla
• De Columna
• De Rutina
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel Global
• Los permisos globales se aplican a todas las
bases de datos de un servidor dado.
• Estos privilegios son almacenados en la
tabla “mysql.user”
• GRANT ALL ON *.* y REVOKE ALL ON *.*
otorgan y quitan sólo permisos globales.
GRANT all privileges on *.* to user1@'localhost' identified by 'user1' with grant option;
REVOKE all privileges on *.* FROM user1@'localhost' identified by 'user1';
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Base de Datos (I)
• Los permisos de base de datos se aplican a todos
los objetos en una base de datos dada
• Estos permisos se almacenan en las tablas
“mysql.db”
• GRANT ALL ON db_name.* y REVOKE ALL ON
db_name.* otorgan y quitan sólo permisos de
bases de datos.
GRANT all privileges on cdcol.* to user1@'localhost' identified by 'user1' with grant option;
REVOKE all privileges on cdcol.* FROM user1@'localhost' identified by 'user1';
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Base de Datos (II)
GRANT all privileges on cdcol.* to user1@'localhost' identified by 'user1' with grant option;
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Base de Datos (III)
SELECT * from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Base de Datos (IV)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Base de Datos (V)
REVOKE all privileges on cdcol.* FROM user1@'localhost' identified by 'user1';
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Base de Datos (VI)
SELECT * from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Tabla (I)
• Los permisos de tabla se aplican a todas las
columnas en una tabla dada
• Estos permisos se almacenan en la tabla
mysql.tables_priv
• GRANT ALL ON db_name. tbl_name y REVOKE
ALL ON db_name. tbl_name otorgan y quitan
permisos sólo de tabla.
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';
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Tabla (II)
GRANT all privileges on cdcol.cds to user1@'localhost' identified by 'user1' with grant option;
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Tabla (III)
SELECT * from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Tabla (IV)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Tabla (V)
REVOKE all privileges on cdcol.cds FROM user1@'localhost' identified by 'user1';
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Tabla (VI)
SELECT * from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Columna (I)
• Los permisos de columna se aplican a columnas en
una tabla dada
• Estos permisos se almacenanen la tabla
“mysql.columns_priv”
• Usando REVOKE, debe especificar las mismas
columnas que se otorgaron los permisos
GRANT SELECT(titel,interpret) on cdcol.cds to user1@'localhost' identified by 'user1' with grant option;
REVOKE SELECT(titel,interpret) on cdcol.cds FROM user1@'localhost' identified by 'user1';
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Columna (II)
GRANT SELECT(titel,interpret) on cdcol.cds to user1@'localhost' identified by 'user1' with grant option;
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Columna (III)
SELECT * from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Columna (IV)
SELECT titel,interpret from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Columna (V)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Columna (VI)
REVOKE SELECT(titel,interpret) on cdcol.cds FROM user1@'localhost' identified by 'user1';
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Columna (VII)
SELECT titel,interpret from cdcol.cds;
LUIS MENGUAL (c)
Gestión de Bases de Datos
DROP SCHEMA IF EXISTS TablasFecha3;
CREATE SCHEMA TablasFecha3;
USE TablasFecha3;
create table Cliente(
Dni VARCHAR(10),
Nombre VARCHAR(10),
Apellido VARCHAR(10),
PRIMARY KEY (Dni)
)ENGINE=InnoDB;
create table Pedidos(
npedido INTEGER,
fecha DATE,
Cantidad DOUBLE,
cliente_Dni VARCHAR(10),
PRIMARY KEY (npedido),
FOREIGN KEY (cliente_Dni) REFERENCES Cliente(Dni)
)ENGINE=InnoDB;
Privilegios Nivel de Rutina (I)
LUIS MENGUAL (c)
Gestión de Bases de Datos
delimiter //
CREATE PROCEDURE `tabla_fecha`( )
BEGIN
DECLARE Fecha_Actual VARCHAR(50);
SET Fecha_Actual=DATE_FORMAT(CURRENT_TIMESTAMP, '%d_%m_%Y_%H%i');
SET @t=CONCAT('Tabla_', Fecha_Actual);
SET @q=CONCAT('CREATE TABLE ',@t,' (i INT)');
PREPARE S1 FROM @q;
EXECUTE S1;
END;
//
delimiter ;
INSERT INTO Cliente VALUES ('7211545v','Carlos','Martinez Lopez');
INSERT INTO Pedidos VALUES ('122','2010/01/05',7,'7211545v');
Privilegios Nivel de Rutina (II)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Rutina (III)
SHOW PROCEDURE STATUS like 'tabla_fecha';
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Rutina (V)
CALL TablasFecha3.tabla_fecha();
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Rutina (VI)
CREATE USER user1@'localhost' identified by 'user1';
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Rutina (VII)
CALL TablasFecha3.tabla_fecha();
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Rutina (VIII)
GRANT EXECUTE ON PROCEDURE TablasFecha3.tabla_fecha TO user1@'localhost';
SHOW GRANTS FOR user1@localhost;
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Rutina (IX)
CALL TablasFecha3.tabla_fecha();
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Rutina (X)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Privilegios Nivel de Rutina (XI)
LUIS MENGUAL (c)
Gestión de Bases de Datos
• SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('user11');
Sólo los usuarios tales como root con acceso de modificación para la base de datos mysql
puede cambiar la contraseña de otro usuario
• GRANT USAGE ON *.* TO 'user1'@'localhost' IDENTIFIED BY
'user12‘;
Puede usar el comando GRANT USAGE globalmente (ON *.*) para asignar una contraseña
a una cuenta sin afectar los permisos actuales de la cuenta
• UPDATE mysql.user SET Password = PASSWORD('user13') WHERE
Host = 'localhost' AND User = 'user1'; FLUSH PRIVILEGES;
Aunque generalmente es preferible asignar contraseñas usando uno de los métodos
precedentes, se puede hacer modificando la tabla mysql. user directamente:
Cambiar Contraseñas de Usuario (I)
LUIS MENGUAL (c)
Gestión de Bases de Datos
SHOW GRANTS FOR CURRENT_USER();
Cambiar Contraseñas de Usuario (II)
LUIS MENGUAL (c)
Gestión de Bases de Datos
SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('user11')
Cambiar Contraseñas de Usuario (III)
LUIS MENGUAL (c)
Gestión de Bases de Datos
GRANT USAGE ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'user12';
Cambiar Contraseñas de Usuario (IV)
LUIS MENGUAL (c)
Gestión de Bases de Datos
UPDATE mysql.user SET Password = PASSWORD('user13') WHERE Host = 'localhost' AND User = 'user1';
FLUSH PRIVILEGES;
Cambiar Contraseñas de Usuario (V)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Resetear Contraseña Root MySQL (I)
SET PASSWORD FOR 'root'@'%' = PASSWORD('root');
Arrancar el servidor con:
mysqld --skip-grant-tables
Entro como root sin password
mysql -u root
Cambio la password
UPDATE mysql.user SET Password=PASSWORD(‘root2') WHERE User='root';
actualizar los privilegios
FLUSH PRIVILEGES;
LUIS MENGUAL (c)
Gestión de Bases de Datos
SET PASSWORD FOR 'root'@'%' = PASSWORD('root');
Resetear Contraseña Root MySQL (II)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Resetear Contraseña Root MySQL (III)
LUIS MENGUAL (c)
Gestión de Bases de Datos
Resetear Contraseña Root MySQL (IV)

Más contenido relacionado

Similar a GBD_GESTION_USUARIOS.pdf

Taller oracle ccfcffcfcfcfcfcffc
Taller oracle ccfcffcfcfcfcfcffcTaller oracle ccfcffcfcfcfcfcffc
Taller oracle ccfcffcfcfcfcfcffc
jinkalel kalel
 
USUARIOS profile en oracle base de datos
USUARIOS profile en oracle base de datosUSUARIOS profile en oracle base de datos
USUARIOS profile en oracle base de datos
NelsonMamaniRamos
 
Manual basico de_oracle
Manual basico de_oracleManual basico de_oracle
Manual basico de_oracle
elena
 

Similar a GBD_GESTION_USUARIOS.pdf (20)

Capitulo 6
Capitulo 6Capitulo 6
Capitulo 6
 
Sql4
Sql4Sql4
Sql4
 
Ejercicio privilegios
Ejercicio privilegiosEjercicio privilegios
Ejercicio privilegios
 
Clase2
Clase2Clase2
Clase2
 
INFOSAN Delphi 453-602
INFOSAN Delphi  453-602INFOSAN Delphi  453-602
INFOSAN Delphi 453-602
 
Taller oracle ccfcffcfcfcfcfcffc
Taller oracle ccfcffcfcfcfcfcffcTaller oracle ccfcffcfcfcfcfcffc
Taller oracle ccfcffcfcfcfcfcffc
 
Taller oracle seguridad backup recovery 22092008
Taller oracle seguridad backup recovery 22092008Taller oracle seguridad backup recovery 22092008
Taller oracle seguridad backup recovery 22092008
 
SQLite3
SQLite3SQLite3
SQLite3
 
Seguridad tsql sql server 2008
Seguridad tsql sql server 2008Seguridad tsql sql server 2008
Seguridad tsql sql server 2008
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
USUARIOS profile en oracle base de datos
USUARIOS profile en oracle base de datosUSUARIOS profile en oracle base de datos
USUARIOS profile en oracle base de datos
 
MANUAL
MANUALMANUAL
MANUAL
 
Mysql
MysqlMysql
Mysql
 
Manual basico de_oracle
Manual basico de_oracleManual basico de_oracle
Manual basico de_oracle
 
Gestion de datos[1].pdf
Gestion de datos[1].pdfGestion de datos[1].pdf
Gestion de datos[1].pdf
 
Privilegios y funciones en MySQL
Privilegios y funciones en MySQLPrivilegios y funciones en MySQL
Privilegios y funciones en MySQL
 
04 Primeros pasos con my sql
04 Primeros pasos con my sql04 Primeros pasos con my sql
04 Primeros pasos con my sql
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDB
 
Curso sql server_administracion
Curso sql server_administracionCurso sql server_administracion
Curso sql server_administracion
 

Último

Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
JC Díaz Herrera
 
PLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorarPLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorar
CelesteRolon2
 

Último (20)

La Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdfLa Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdf
 
Principales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto RicoPrincipales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto Rico
 
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
Cesar Vilchis Vieyra  Cesar Vilchis VieyraCesar Vilchis Vieyra  Cesar Vilchis Vieyra
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
 
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptxP.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
 
El Manierismo. El Manierismo
El Manierismo.              El ManierismoEl Manierismo.              El Manierismo
El Manierismo. El Manierismo
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdf
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
Análisis del Modo y Efecto de Fallas AMEF.ppt
Análisis del Modo y Efecto de Fallas AMEF.pptAnálisis del Modo y Efecto de Fallas AMEF.ppt
Análisis del Modo y Efecto de Fallas AMEF.ppt
 
PLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorarPLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorar
 
procedimiento paran la planificación en los centros educativos tipo v(multig...
procedimiento  paran la planificación en los centros educativos tipo v(multig...procedimiento  paran la planificación en los centros educativos tipo v(multig...
procedimiento paran la planificación en los centros educativos tipo v(multig...
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
 
Los países por porcentaje de población blanca europea en AL (2024).pdf
Los países por porcentaje de población blanca europea en AL (2024).pdfLos países por porcentaje de población blanca europea en AL (2024).pdf
Los países por porcentaje de población blanca europea en AL (2024).pdf
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdf
 
Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdf
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
 
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudirTriptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
 
Trabajo Final de Powerbi DMC Indicadores.pptx
Trabajo Final de Powerbi DMC Indicadores.pptxTrabajo Final de Powerbi DMC Indicadores.pptx
Trabajo Final de Powerbi DMC Indicadores.pptx
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
 

GBD_GESTION_USUARIOS.pdf

  • 1. LUIS MENGUAL (c) Gestión de Bases de Datos Gestión de Usuarios en MySQL
  • 2. LUIS MENGUAL (c) Gestión de Bases de Datos • Crear cuentas de usuario en MySQL • Describir los niveles de privilegios de usuarios en Mysql (Comandos GRANT/REVOKE) • Asignar y actualizar contraseñas de usuarios • Presentar ejemplos prácticos Objetivos: Gestión de Usuarios en MySQL
  • 3. LUIS MENGUAL (c) Gestión de Bases de Datos Índice 1. Acceso usuarios del sistema y creación de cuentas de usuario 2. Crear un usuario del sistema 3. Otorgar privilegios al usuario (Comando GRANT) Nivel Global Nivel de Base de Datos Nivel de Tabla Nivel de Rutina 4. Revocación de privilegios de usuario (Comando Revoke) 5. Cambiar contraseña de cuentas de usuario
  • 4. LUIS MENGUAL (c) Gestión de Bases de Datos Control de Acceso BD • Nivel 1: Comprobación de la conexión – Desde dónde se conecta el usuario – Nombre del usuario – Consulta a tabla “user” (host, user, password) • Nivel 2: Comprobación de privilegios – Por cada petición en la conexión se comprueba si hay privilegios para efectuarla – Consulta a tablas user, db, tables_priv, colums_priv, procs_priv
  • 5. LUIS MENGUAL (c) Gestión de Bases de Datos Usuarios del sistema (II) SELECT * from mysql.user;
  • 6. LUIS MENGUAL (c) Gestión de Bases de Datos Usuarios del sistema (I)
  • 7. LUIS MENGUAL (c) Gestión de Bases de Datos Comando GRANT Comando que permite 'conceder' privilegios a un usuario • 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 contraseña 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 cuestión puede a la vez otorgar privilegios a otros usuarios • REQUIRE: Opciones de seguridad en el acceso relacionadas con SSL GRANT ALL PRIVILEGES ON *.* TO user1@'localhost' IDENTIFIED BY ‘user1' WITH GRANT OPTION {REQUIRE (…)};
  • 8. LUIS MENGUAL (c) Gestión de Bases de Datos Crear un usuario (I) GRANT all privileges on *.* to user1@'localhost' identified by 'user1' with grant option; SHOW GRANTS FOR user1@localhost;
  • 9. LUIS MENGUAL (c) Gestión de Bases de Datos Crear un usuario (II) SELECT * from mysql.user;
  • 10. LUIS MENGUAL (c) Gestión de Bases de Datos Crear un usuario (III) SELECT * from cdcol.cds;
  • 11. LUIS MENGUAL (c) Gestión de Bases de Datos Comando REVOKE REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] . . . ON [object_type] {tbl_name | * | *. * | db_name. *} FROM user [, user] . . . • Permite revocar los privilegios del usuario otorgados con el comando GRANT • La revocación se hará al mismo nivel de privilegios otorgados con el comando GRANT
  • 12. LUIS MENGUAL (c) Gestión de Bases de Datos Revocar privilegios (I) REVOKE all privileges on *.* FROM user1@'localhost' identified by 'user1'; SHOW GRANTS FOR user1@localhost;
  • 13. LUIS MENGUAL (c) Gestión de Bases de Datos Revocar privilegios (II) SELECT * from mysql.user;
  • 14. LUIS MENGUAL (c) Gestión de Bases de Datos Revocar privilegios (III) SELECT * from cdcol.cds;
  • 15. LUIS MENGUAL (c) Gestión de Bases de Datos Eliminar un usuario (I) DROP USER user1@localhost;
  • 16. LUIS MENGUAL (c) Gestión de Bases de Datos Eliminar un usuario (II) SELECT * from mysql.user
  • 17. LUIS MENGUAL (c) Gestión de Bases de Datos Niveles Privilegios • Global • De Base de Datos • De Tabla • De Columna • De Rutina
  • 18. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel Global • Los permisos globales se aplican a todas las bases de datos de un servidor dado. • Estos privilegios son almacenados en la tabla “mysql.user” • GRANT ALL ON *.* y REVOKE ALL ON *.* otorgan y quitan sólo permisos globales. GRANT all privileges on *.* to user1@'localhost' identified by 'user1' with grant option; REVOKE all privileges on *.* FROM user1@'localhost' identified by 'user1';
  • 19. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Base de Datos (I) • Los permisos de base de datos se aplican a todos los objetos en una base de datos dada • Estos permisos se almacenan en las tablas “mysql.db” • GRANT ALL ON db_name.* y REVOKE ALL ON db_name.* otorgan y quitan sólo permisos de bases de datos. GRANT all privileges on cdcol.* to user1@'localhost' identified by 'user1' with grant option; REVOKE all privileges on cdcol.* FROM user1@'localhost' identified by 'user1';
  • 20. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Base de Datos (II) GRANT all privileges on cdcol.* to user1@'localhost' identified by 'user1' with grant option; SHOW GRANTS FOR user1@localhost;
  • 21. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Base de Datos (III) SELECT * from cdcol.cds;
  • 22. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Base de Datos (IV)
  • 23. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Base de Datos (V) REVOKE all privileges on cdcol.* FROM user1@'localhost' identified by 'user1'; SHOW GRANTS FOR user1@localhost;
  • 24. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Base de Datos (VI) SELECT * from cdcol.cds;
  • 25. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Tabla (I) • Los permisos de tabla se aplican a todas las columnas en una tabla dada • Estos permisos se almacenan en la tabla mysql.tables_priv • GRANT ALL ON db_name. tbl_name y REVOKE ALL ON db_name. tbl_name otorgan y quitan permisos sólo de tabla. 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';
  • 26. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Tabla (II) GRANT all privileges on cdcol.cds to user1@'localhost' identified by 'user1' with grant option; SHOW GRANTS FOR user1@localhost;
  • 27. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Tabla (III) SELECT * from cdcol.cds;
  • 28. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Tabla (IV)
  • 29. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Tabla (V) REVOKE all privileges on cdcol.cds FROM user1@'localhost' identified by 'user1'; SHOW GRANTS FOR user1@localhost;
  • 30. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Tabla (VI) SELECT * from cdcol.cds;
  • 31. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Columna (I) • Los permisos de columna se aplican a columnas en una tabla dada • Estos permisos se almacenanen la tabla “mysql.columns_priv” • Usando REVOKE, debe especificar las mismas columnas que se otorgaron los permisos GRANT SELECT(titel,interpret) on cdcol.cds to user1@'localhost' identified by 'user1' with grant option; REVOKE SELECT(titel,interpret) on cdcol.cds FROM user1@'localhost' identified by 'user1';
  • 32. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Columna (II) GRANT SELECT(titel,interpret) on cdcol.cds to user1@'localhost' identified by 'user1' with grant option; SHOW GRANTS FOR user1@localhost;
  • 33. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Columna (III) SELECT * from cdcol.cds;
  • 34. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Columna (IV) SELECT titel,interpret from cdcol.cds;
  • 35. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Columna (V)
  • 36. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Columna (VI) REVOKE SELECT(titel,interpret) on cdcol.cds FROM user1@'localhost' identified by 'user1'; SHOW GRANTS FOR user1@localhost;
  • 37. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Columna (VII) SELECT titel,interpret from cdcol.cds;
  • 38. LUIS MENGUAL (c) Gestión de Bases de Datos DROP SCHEMA IF EXISTS TablasFecha3; CREATE SCHEMA TablasFecha3; USE TablasFecha3; create table Cliente( Dni VARCHAR(10), Nombre VARCHAR(10), Apellido VARCHAR(10), PRIMARY KEY (Dni) )ENGINE=InnoDB; create table Pedidos( npedido INTEGER, fecha DATE, Cantidad DOUBLE, cliente_Dni VARCHAR(10), PRIMARY KEY (npedido), FOREIGN KEY (cliente_Dni) REFERENCES Cliente(Dni) )ENGINE=InnoDB; Privilegios Nivel de Rutina (I)
  • 39. LUIS MENGUAL (c) Gestión de Bases de Datos delimiter // CREATE PROCEDURE `tabla_fecha`( ) BEGIN DECLARE Fecha_Actual VARCHAR(50); SET Fecha_Actual=DATE_FORMAT(CURRENT_TIMESTAMP, '%d_%m_%Y_%H%i'); SET @t=CONCAT('Tabla_', Fecha_Actual); SET @q=CONCAT('CREATE TABLE ',@t,' (i INT)'); PREPARE S1 FROM @q; EXECUTE S1; END; // delimiter ; INSERT INTO Cliente VALUES ('7211545v','Carlos','Martinez Lopez'); INSERT INTO Pedidos VALUES ('122','2010/01/05',7,'7211545v'); Privilegios Nivel de Rutina (II)
  • 40. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Rutina (III) SHOW PROCEDURE STATUS like 'tabla_fecha';
  • 41. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Rutina (V) CALL TablasFecha3.tabla_fecha();
  • 42. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Rutina (VI) CREATE USER user1@'localhost' identified by 'user1'; SHOW GRANTS FOR user1@localhost;
  • 43. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Rutina (VII) CALL TablasFecha3.tabla_fecha();
  • 44. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Rutina (VIII) GRANT EXECUTE ON PROCEDURE TablasFecha3.tabla_fecha TO user1@'localhost'; SHOW GRANTS FOR user1@localhost;
  • 45. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Rutina (IX) CALL TablasFecha3.tabla_fecha();
  • 46. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Rutina (X)
  • 47. LUIS MENGUAL (c) Gestión de Bases de Datos Privilegios Nivel de Rutina (XI)
  • 48. LUIS MENGUAL (c) Gestión de Bases de Datos • SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('user11'); Sólo los usuarios tales como root con acceso de modificación para la base de datos mysql puede cambiar la contraseña de otro usuario • GRANT USAGE ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'user12‘; Puede usar el comando GRANT USAGE globalmente (ON *.*) para asignar una contraseña a una cuenta sin afectar los permisos actuales de la cuenta • UPDATE mysql.user SET Password = PASSWORD('user13') WHERE Host = 'localhost' AND User = 'user1'; FLUSH PRIVILEGES; Aunque generalmente es preferible asignar contraseñas usando uno de los métodos precedentes, se puede hacer modificando la tabla mysql. user directamente: Cambiar Contraseñas de Usuario (I)
  • 49. LUIS MENGUAL (c) Gestión de Bases de Datos SHOW GRANTS FOR CURRENT_USER(); Cambiar Contraseñas de Usuario (II)
  • 50. LUIS MENGUAL (c) Gestión de Bases de Datos SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('user11') Cambiar Contraseñas de Usuario (III)
  • 51. LUIS MENGUAL (c) Gestión de Bases de Datos GRANT USAGE ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'user12'; Cambiar Contraseñas de Usuario (IV)
  • 52. LUIS MENGUAL (c) Gestión de Bases de Datos UPDATE mysql.user SET Password = PASSWORD('user13') WHERE Host = 'localhost' AND User = 'user1'; FLUSH PRIVILEGES; Cambiar Contraseñas de Usuario (V)
  • 53. LUIS MENGUAL (c) Gestión de Bases de Datos Resetear Contraseña Root MySQL (I) SET PASSWORD FOR 'root'@'%' = PASSWORD('root'); Arrancar el servidor con: mysqld --skip-grant-tables Entro como root sin password mysql -u root Cambio la password UPDATE mysql.user SET Password=PASSWORD(‘root2') WHERE User='root'; actualizar los privilegios FLUSH PRIVILEGES;
  • 54. LUIS MENGUAL (c) Gestión de Bases de Datos SET PASSWORD FOR 'root'@'%' = PASSWORD('root'); Resetear Contraseña Root MySQL (II)
  • 55. LUIS MENGUAL (c) Gestión de Bases de Datos Resetear Contraseña Root MySQL (III)
  • 56. LUIS MENGUAL (c) Gestión de Bases de Datos Resetear Contraseña Root MySQL (IV)