Usuarios y Privilegios en Mysql

October 25, 2017 | Author: Marco Ibañez Antolin | Category: Password, Table (Database), Databases, Information Technology Management, Software
Share Embed Donate


Short Description

Download Usuarios y Privilegios en Mysql...

Description

USUARIOS Y PRIVILEGIOS EN MYSQL

En Workbench entraremos en la opción Manage Security

Me aparecerá la siguiente pantalla:

Y después:

Me aparecerá la pantalla en la que podré crear nuevos usuarios y establecer privilegios:

En esta ventana puedo editar una determinada cuenta de usuario o bien añadir nuevos usuarios. Teniendo seleccionada Server Access Management, si elijo la única cuenta de usuario que tengo actualmente root, veremos que nos aparece la siguiente pantalla:

La pestaña login me muestra nuestro login name y me da la oportunidad de modificar la contraseña. La pestaña Administrative Roles me muestra los privilegios que tiene asignados esta cuenta de usuario y me da la oportunidad de modificarlos.

La pestaña Account Limits nos permitirá establecer el máximo número de consultas, actualizaciones, conexiones y conexiones simultáneas que se permitirán.

Vamos a crear un nuevo usuario llamado usuario1. Para ello, pulsaremos Add Account en la esquina inferior izquierda. En la pestaña Login Name pondremos usuario1. En la pestaña Login, en el apartado llamado Limit Connectivity to Hosts Matching pondremos localhost. La contraseña será la que tú quieras. En la pestaña Administrative Roles vamos a marcar la casilla que pone DBManager. Verás que automáticamente también se marca BackupAdmin. Pulsamos Apply. Puedo desmarcar todo lo de Administrative Roles y establecer los privilegios que me interesen para cada uno de los esquemas de los que disponga en Workbench. Ahora voy a seleccionar el usuario1 y pulso sobre la pestaña Schema Privileges.

Pulso Add Entry y me aparecerá la siguiente pantalla.

En nuestro caso, seleccionamos localhost. En la parte de abajo, donde pone Schema, por defecto se hace referencia a cualquier esquema, pero podemos seleccionar cualquiera de los esquemas de los que disponemos para que los privilegios y permisos del usuario seleccionado sólo hagan referencia al esquema o esquemas que indiquemos. Vamos a seleccionar, por ejemplo, el esquema llamado supermercado. Aparecerá la siguiente pantalla:

Vamos a marcar las casillas INSERT y UPDATE de Object Rights. Lo confirmamos. Si ahora entrásemos mediante el usuario usuario1 dicho usuario sólo tendría privilegios para realizar dichas operaciones sobre la base de datos supermercado. Además sólo aparecería dicho esquema. A la hora de crear usuarios y establecer privilegios usando comandos, usaré los siguientes: Para crear cuentas de usuario que permitan a los usuarios acceder a ciertos objetos con un nivel determinado de privilegios hay que hacer uso del comando CREATE USER. La sintaxis será la siguiente: CREATE USER nombre_usuario@localhost IDENTIFIED BY ‘password’ Para eliminar cuentas de usuario se usa el comando siguiente: DROP USER nombre_usuario@localhost Se puede renombrar un usuario conservando todos sus privilegios, usando el comando RENAME USER y cambiar la password mediante el comando SET PASSWORD. La sintaxis será la siguiente: RENAME USER nombre_usuario_antiguo@localhost TO nuevo_nombre_usuario@localhost; SET PASSWORD for nombre_usuario_antiguo@localhost = PASSWORD(‘nueva_contraseña’); Un usuario puede obtener privilegios para manipular objetos de una base de datos con el comando GRANT. También se le pueden denegar permisos con el comando REVOKE.

EL SISTEMA DE PRIVILEGIOS EN MYSQL La sintaxis del comando GRANT para MySQL es la siguiente: GRANT tipo_privilegio [(columnas)][,tipo_privilegio [(columnas)]]…. ON {nombre_tabla │ * │ *.* │ base_datos.* │ base_datos.nombre_tabla} TO usuario [IDENTIFIED BY [PASSWORD] ‘password’]]…. [WITH opcion [opcion]… opcion= GRANT OPTION │ MAX_QUERIES_PER_HOUR count │ MAX_UPDATES_PER_HOUR count │ MAX_CONNECTIONS_PER_HOUR count │ MAX_USERS_PER_HOUR count

En MySQL se puede otorgar a un us uario permisos para hacer cualquier operación a nivel de host, de base de datos, de tabla o de columna. Así, es posible asignar, por ejemplo, permisos de SELECT sobre las columnas Nombre, Oficio y Salario de la tabla empleado del esquema empresa:

GRANT SELECT (Nombre, Oficio, Salario) ON empleado TO paco@localhost; Con la sentencia anterior, el usuario paco@localhost sólo podrá seleccionar las columnas Nombre, Oficio y Salario de la tabla empleado, siéndole denegada una consulta del tipo SELECT * FROM empleado.

Tipo_privilegio es la clase de permiso que se puede otorgar. Típicamente pueden ser SELECT, INSERT, UPDATE…

Algunos ejemplos de consultas para asignación de permisos en MySQL son los siguientes:

GRANT SELECT, INSERT on nba.* TO paco@localhost; Otorga permisos de SELECT e INSERT a todas las tablas de la nba.

GRANT ALL PRIVILEGES on empresa.empleado TO paco@localhost; Otorga todos los privilegios a la tabla empleado de empresa

GRANT SELECT on *.* to paco@localhost; Otorga permisos de SELECT a todas las tablas de todas las bases de datos.

GRANT SELECT, INSERT,UPDATE,DELETE on nba.jugadores to paco@localhost WITH MAX_QUERIES_PER_HOUR 10 Otorga permisos de SELECT, INSERT, UPDATE y DELETE con un límite de 10 consultas a la hora en la tabla jugadores de la nba.

La sentencia REVOKE deniega permisos a un usuario sobre un objeto. La sintaxis es prácticamente igual que la de GRANT.

EJERCICIOS USUARIOS Y PRIVILEGIOS 1. Crea un usuario llamado usuario2 y haz que sólo pueda acceder alesquema ventas para hacer inserciones. CREATE USER usuario2@localhost IDENTIFIED BY 'admin'; GRANT INSERT ON ventas.oficinas TO usuario2@localhost; 2. Entra como usuario2 e inserta un elemento en la tabla oficinas con oficina=20, ciudad=Cádiz, región=sur, dir=103, objetivo=80000 y ventas=50000. Comprueba que se ha insertado.¿Puedes verlo? INSERT INTO ventas.oficinas (oficina,ciudad,region,dir,objetivo,ventas) VALUES ("20","Cádiz","sur","103","80000","50000"); 3. Entra desde el usuario root y observa si se ha insertado el elemento. Como ya existe y se duplicaría no la añade 4. Modifica ahora los permisos de usuario2 para permitirle borrar y mostrar elementos mediante SELECT. GRANT INSERT ON ventas TO usuario2@localhost; 5. Ponle al usuario2 un valor máximo de queries de 1. Prueba a entrar con ese usuario, cierra y vuelve a intentar entrar. ¿Qué ocurre? GRANT SELECT ON ventas.* TO usuario2@localhost WITH MAX_QUERIES_PER_HOUR 1;

6. Crea un usuario llamado usuario3 y haz que pueda acceder a la tabla supermercado para hacer SELECT y a la tabla empresa para hacer INSERT. CREATE USER usuario3@localhost IDENTIFIED BY 'admin'; GRANT SELECT ON SUPERMERCADO.* TO usuario3@localhost; GRANT INSERT ON EMPRESA.* TO usuario3@localhost;

7. Entra como usuario3 8. Prueba a inserta un nuevo artículo en el supermercado cuyo codart sea 16, nomart sea Tablet, dpto. sea 2 y el preciounidad sea 250. use supermercado; INSERT INTO supermercado.articulos (codart,nomart,dpto,preciunidad) VALUES ("16","TABLET","2","250");

9. Muestra los vendedores cuya edad esté entre 20 y 30. use supermercado; SELECT * FROM VENDEDORES WHERE EDAD LIKE 20 OR EDAD LIKE 30;

10. Dentro del esquema empresa, muestra los nombres de todos los empleados use empresa; select nombre from empleado;

11. Quiero añadir un nuevo departamento en la tabla departamentos del esquema empresa. Los nuevos valores serán 50, Marketing, Valencia. INSERT INTO empresa.departamento (deptnum,nombredept,localidad) VALUES ("50","Marketing","Valencia");

12. Muestra la tabla departamentos para ver si se ha añadido el nuevo. ¿Has podido verlo? Cambia al usuario root y comprueba que esa inserción se ha realizado.

13.Desde el us uario3, intenta borrar el departamento añadido. ¿Te ha dejado? No porque no tiene permisos de borrado 14.Borra el departamento que añadiste desde el usuario root. DELETE FROM EMPRESA.DEPARTAMENTO WHERE DEPARTAMENTO.DEPTNUM=50; BORRADO AL TENER PRIVILEGIOS

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF