t10 - gestion de usuarios

26
Tema – 10 Gestión de usuarios

Upload: daniel-santiago-martinez

Post on 08-Jul-2015

347 views

Category:

Education


1 download

DESCRIPTION

Gestión de usuarios y permisos en MySQL

TRANSCRIPT

Page 1: T10 - Gestion de usuarios

Tema – 10Gestión de usuarios

Page 2: T10 - Gestion de usuarios

Índice

1. Creación de usuarios

2. Consultar usuarios creados

3. Borrar usuarios

4. Cambiar nombre a un usuario

5. Cambiar password

6. Otorgar permisos

7. Ver permisos

8. Quitar permisos

9. Niveles de los permisos

2

Page 3: T10 - Gestion de usuarios

10.1. Creación de usuarios

• La sentencia para añadir un usuario en MySQL es la siguiente:

CREATE USER nombre_usuario

IDENTIFIED BY ‘contraseña’;

• Ejemplo 1:CREATE USER dani

IDENTIFIED BY ‘12345’;

• Ejemplo 2:CREATE USER dani;

3

Page 4: T10 - Gestion de usuarios

10.1. Creación de usuarios

• Si queremos evitar que un usuario pueda conectarse desde cualquier máquina a nuestro servidor MySQL, podemos crear al usuario limitando su acceso a una máquina concreta. Lo haremos usando la siguiente nomenclatura:

nombre_usuario@host

4

Page 5: T10 - Gestion de usuarios

10.1. Creación de usuarios

• Ejemplo 1: el usuario dani sólo puede acceder de forma local:

CREATE USER dani@localhost

IDENTIFIED BY ‘12345’;• Ejemplo 2: el usuario dani sólo puede acceder

desde la red 192.168.1.0:

CREATE USER dani@‘192.168.1.%’

IDENTIFIED BY ‘67890’;

5

Page 6: T10 - Gestion de usuarios

10.1. Creación de usuarios

• Ejemplo 3: el usuario dani puede acceder a través de un dominio:CREATE USER dani@‘%.midominio.com’

IDENTIFIED BY ‘abcdef’;

• Hay que tener en cuenta que hemos creado tres usuarios con el nombre ‘dani’, pero que son usuarios diferentes.

6

Page 7: T10 - Gestion de usuarios

10.2. Consultar usuarios creados

• Los usuarios de MySQL se almacenan en la tabla mysql.user. Podemos consultar la información de esta tabla con la sentencia SELECT:

SELECT * FROM mysql.user;

7

Page 8: T10 - Gestion de usuarios

10.3. Borrar usuarios

• Los usuarios de MySQL se borran con la sentencia DROP USER. Podemos borrar varios usuarios indicando sus nombres, separados por comas:• Ejemplo:

DROP USER usuario1, usuario2…

8

Page 9: T10 - Gestion de usuarios

10.4. Cambiar nombre a un usuario

• Para cambiar el nombre de un usuario podemos usar la sentencia RENAME:

RENAME USER nombre_viejo TO nombre_nuevo [, nombre_viejo2 TO nombre_nuevo2…]• Ejemplo:

RENAME USER pepe TO pepito;

9

Page 10: T10 - Gestion de usuarios

10.5. Cambiar password

• Podemos cambiar el password de usuarios existentes mediante la sintaxis:SET PASSWORD

FOR usuario = PASSWORD(‘nuevo_password’);

• También podemos usar la sentencia:SET PASSWORD

FOR usuario@host = PASSWORD(‘nuevo_pass’);

10

Page 11: T10 - Gestion de usuarios

10.6. Otorgar permisos

• Los permisos en MySQL tienen en cuenta tres aspectos:–Permiso: el tipo de operación que se le

dejará hacer al usuario.–Base de datos: la base de datos o tablas

sobre las cuáles se aplicarán dichos permisos.–Usuario: el o los usuarios a los cuáles se les

otorgará dichos permisos.11

Page 12: T10 - Gestion de usuarios

10.6. Otorgar permisos

• La sentencia para dar permisos es:

GRANT privilegios

ON database

TO usuario

[WITH option];

12

Page 13: T10 - Gestion de usuarios

10.6. Otorgar permisos

• Privilegios que tenemos en MySQL:• ALL: activa todos los privilegios (excepto el de dar

privilegios a otros usuarios).• ALTER, CREATE, CREATE ROUTINE, CREATE

TEMPORARY TABLES, CREATE VIEW, DROP.• INSERT, SELECT, UPDATE, DELETE.• EXECUTE, PROCESS, REFERENCES, RELOAD,

REPLICATION CLIENT, REPLICATION SLAVE• FILE, INDEX, LOCK TABLES, SHOW DATABASES,

SHOW VIEW, SHUTDOWN, SUPER, USAGE13

Page 14: T10 - Gestion de usuarios

10.6. Otorgar permisos

• La cláusula WITH option es opcional. Podemos especificar las siguientes opciones:• GRANT OPTION• MAX_QUERIES_PER_HOUR num• MAX_CONNECTIONS_PER_HOUR num• MAX_USER_CONNECTIONS num

• La opción GRANT OPTION sirve para dar a un usuario el privilegio para conceder permisos a otros. Hay que destacar que el usuario sólo puede otorgar aquellos permisos que él tenga.

14

Page 15: T10 - Gestion de usuarios

10.6. Otorgar permisos

• Ejemplo: el usuario podrá visualizar los datos de la tabla película de la base de datos Videoclub:

GRANT SELECT

ON Videoclub.pelicula

TO fulanito;• Si ‘fulanito’ ejecutara la sentencia SHOW TABLES

FROM Videoclub, sólo vería la tabla película. Si la base de datos tuviera más tablas, éstas no se visualizarían.

15

Page 16: T10 - Gestion de usuarios

10.6. Otorgar permisos

• Ejemplo 1: dar varios permisos:GRANT SELECT, INSERT, UPDATE, DELETE

• Ejemplo 2: dar todos los permisos:GRANT ALL

• Ejemplo 3: dar permisos sobre varias tablas:ON database.tabla1, database.tabla2, database2.tabla3

• Ejemplo 4: dar permisos sobre todas las tablas:ON database.*

•Ejemplo 5: dar permisos a varios usuarios:TO user1, user2, user3

16

Page 17: T10 - Gestion de usuarios

10.6. Otorgar permisos

• Ejemplo 6: permisos sobre algunas columnas:GRANT UPDATE(poblacion), SELECT(nombre, poblacion)

• Ejemplo 7: permisos con opciones:GRANT SELECT ON mundo.* TO fulanito WITH MAX_CONNECTIONS_PER_HOUR 3 MAX_QUERIES_PER_HOUR 300

MAX_UPDATES_PER_HOUR 30;

17

Page 18: T10 - Gestion de usuarios

10.7. Ver permisos

• Para ver los permisos que tiene un usuario, usamos la sentencia:

SHOW GRANTS FOR usuario

18

Page 19: T10 - Gestion de usuarios

10.8. Quitar permisos

• La sentencia para quitar permisos es:

REVOKE permisos

ON database

FROM usuario;

19

Page 20: T10 - Gestion de usuarios

10.8. Quitar permisos

• Ejemplo 1: quitamos el permiso de selección otorgado al usuario fulanito:

REVOKE SELECT

ON Videoclub.pelicula

FROM fulanito;• Ejemplo 2: quitamos todos los permisos a un usuario:

REVOKE ALL PRIVILEGES

ON Videoclub.pelicula

FROM fulanito;• Ejemplo 3: quitamos todos los privilegios y la opción de dar privilegios a

otros usuarios:

REVOKE ALL PRIVILEGES, GRANT OPTION

ON Videoclub.pelicula

FROM fulanito20

Page 21: T10 - Gestion de usuarios

10.9. Niveles de los permisos

• Los permisos podemos darlos en los siguientes niveles:• Nivel global.• Nivel de base de datos.• Nivel de tabla• Nivel de columna.• Nivel de rutina.

21

Page 22: T10 - Gestion de usuarios

10.9. Niveles de los permisos

• Nivel global: estos permisos se aplican a todas las bases de datos del servidor.• Se almacenan en la tabla mysql.user.• GRANT ALL ON *.* y REVOKE ALL ON

*.* dan y quitan permisos globales.

22

Page 23: T10 - Gestion de usuarios

10.9. Niveles de los permisos

• Nivel de base de datos: estos permisos se aplican a todos los objetos de la base de datos indicada.• Se almacenan en las tablas mysql.db y

mysql.host.• GRANT ALL ON base_datos.* y REVOKE

ALL ON base_datos.* dan y quitan permisos de bases de datos.

23

Page 24: T10 - Gestion de usuarios

10.9. Niveles de los permisos

• Nivel de tabla: estos permisos se aplican a todas las columnas en la tabla indicada.• Se almacenan en la tabla

mysql.tables_priv.• GRANT ALL ON base_datos.tbl_name y

REVOKE ALL ON base_datos.tbl_name dan y quitan permisos de bases de datos.

24

Page 25: T10 - Gestion de usuarios

10.9. Niveles de los permisos

• Nivel de columna: estos permisos se aplican a columnas en la tabla indicada.• Se almacenan en la tabla

mysql.columns_priv.

25

Page 26: T10 - Gestion de usuarios

10.9. Niveles de los permisos

• Nivel de rutina: estos permisos se aplican a funciones almacenadas. Son los permisos CREATE ROUTINE, ALTER ROUTINE, EXECUTE.• Pueden darse a nivel global o de base de

datos, y también a nivel de rutina para rutinas individuales, excepto CREATE ROUTINE.• Se almacenan en la tabla mysql_procs_priv.

26