t10 - gestion de usuarios

Post on 08-Jul-2015

347 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Gestión de usuarios y permisos en MySQL

TRANSCRIPT

Tema – 10Gestión 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

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

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

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

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

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

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

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

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

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

10.6. Otorgar permisos

• La sentencia para dar permisos es:

GRANT privilegios

ON database

TO usuario

[WITH option];

12

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

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

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

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

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

10.7. Ver permisos

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

SHOW GRANTS FOR usuario

18

10.8. Quitar permisos

• La sentencia para quitar permisos es:

REVOKE permisos

ON database

FROM usuario;

19

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

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

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

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

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

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

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

top related