Sei sulla pagina 1di 10

USUARIOS Y PRIVILEGIOS EN MYSQL

En Workbench entraremos en la opcin Manage Security

Me aparecer la siguiente pantalla:

Y despus:

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 aadir 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 pestaa login me muestra nuestro login name y me da la oportunidad de modificar la contrasea. La pestaa Administrative Roles me muestra los privilegios que tiene asignados esta cuenta de usuario y me da la oportunidad de modificarlos.

La pestaa Account Limits nos permitir establecer el mximo nmero de consultas, actualizaciones, conexiones y conexiones simultneas que se permitirn.

Vamos a crear un nuevo usuario llamado usuario1. Para ello, pulsaremos Add Account en la esquina inferior izquierda. En la pestaa Login Name pondremos usuario1. En la pestaa Login, en el apartado llamado Limit Connectivity to Hosts Matching pondremos localhost. La contrasea ser la que t quieras. En la pestaa Administrative Roles vamos a marcar la casilla que pone DBManager. Vers que automticamente tambin 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 pestaa 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 slo 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 entrsemos mediante el usuario usuario1 dicho usuario slo tendra privilegios para realizar dichas operaciones sobre la base de datos supermercado. Adems slo aparecera 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_contrasea); Un usuario puede obtener privilegios para manipular objetos de una base de datos con el comando GRANT . Tambin 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 operacin 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 slo podr seleccionar las columnas Nombre, Oficio y Salario de la tabla empleado, sindole denegada una consulta del tipo SELECT * FROM empleado.

Tipo_privilegio es la clase de permiso que se puede otorgar. Tpicamente pueden ser SELECT, INSERT, UPDATE

Algunos ejemplos de consultas para asignacin 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 lmite 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 prcticamente igual que la de GRANT.

EJERCICIOS USUARIOS Y PRIVILEGIOS


1. Crea un usuario llamado usuario2 y haz que slo 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=Cdiz, regin=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","Cdiz","sur","103","80000","50000"); 3. Entra desde el usuario root y observa si se ha insertado el elemento. Como ya existe y se duplicara no la aade 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 mximo 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 artculo 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 aadir un nuevo departamento en la tabla departamentos del esquema empresa. Los nuevos valores sern 50, Marketing, Valencia. INSERT INTO empresa.departamento (deptnum,nombredept,localidad) VALUES ("50","Marketing","Valencia");

12. Muestra la tabla departamentos para ver si se ha aadido el nuevo. Has podido verlo? Cambia al usuario root y comprueba que esa insercin se ha realizado.

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

Potrebbero piacerti anche