Anda di halaman 1dari 18

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Profesor: MTI. Elizabeth Corts Palma

Alumno: Rubn Vzquez Cern

Practica 4 y 5: Usuarios y Roles en MySQL Usando PHP

1. Creacin y Asignacin de Roles a Usuarios en MySQL. 2. Comunicacin a la Base de Datos Con PHP. 3. Publicacin de Formularios PHP en la Web

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Introduccin
Objetivo
Realizar la creacin de roles en MySQL, as como la asignacin de dichos roles a usuarios que acceden a la base de datos. Generacin de una conexin a la base de datos a travs de PHP, as como la creacin de formulacin para consulta e insercin de datos a la base de datos. Publicacin de nuestros formularios PHP en la Web, a travs de un hosting (Go Daddy).

Marco Terico Aadir nuevas cuentas de usuario a MySQL


Puede crear cuentas MySQL de dos formas:

Usando comandos GRANT Manipulando las tablas de permisos MySQL directamente El mtodo preferido es usar comandos GRANT, ya que son ms concisos y menos propensos a errores. . GRANT est disponible desde MySQL 3.22.11. Otra opcin para crear cuentas es usar uno de los diversos programas proporcionados por terceras partes que ofrecen capacidades para administradores de MySQL. phpMyAdmin es una de ellos. Los siguientes ejemplos muestran cmo usar el programa cliente mysql para aadir nuevos usuarios. Esto significa que para realizar cambios, debe conectar al servidor MySQL como el usuario root , y la cuenta root debe tener el privilegio INSERT para la base de datos mysql y el permiso administrativo RELOAD. En primer lugar, use el programa mysql para conectar al servidor como el usuario root :
shell> mysql --user=root mysql

Si ha asignado una contrasea a la cuenta root, necesitar la opcin --password o -p para este comando mysql y tambin para los mostrados a continuacin en esta seccin.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Tras la conexin al servidor como root, puede aadir nuevas cuentas. El siguiente comando usa GRANT para inicializar nuevas cuentas:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' -> -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION; IDENTIFIED BY 'some_pass' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost'; mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';

Las cuentas creadas con estos comandos GRANT tienen las siguientes propiedades:

Dos de las cuentas tienen un nombre de usuario de monty y una contrasea de some_pass. Ambas cuentas son cuentas de superusuario con plenos permisos para hacer cualquier cosa. Una cuenta ('monty'@'localhost') puede usarse slo cuando se conecte desde el equipo local. La otra ('monty'@'%') puede usarse para conectarse desde cualquier otro equipo. Note que es necesario tener ambas cuentas para que monty sea capaz de conectarse desde cualquier sitio como monty. Sin la cuenta localhost, la cuenta annima para localhostcreada por mysql_install_db tendra precedencia cuando monty conecte desde el equipo local. Como resultado, monty se tratara como un usuario annimo. La razn para ello es que el usuario annimo tiene un valor ms especfico en la columna Host que la cuenta 'monty'@'%' y por lo tanto toma precedencia en la ordenacin de la tabla user. (La ordenacin de la tabla user se discute en Seccin 5.6.5, Control de acceso, nivel 1: Comprobacin de la conexin.)

Una cuenta tiene un nombre de usuario de admin y no tiene contrasea. Esta cuenta puede usarse slo desde el equipo local. Tiene los privilegios administrativos RELOAD y PROCESS . stos permiten al usuario admin ejecutar los comandos mysqladmin reload, mysqladmin refresh, y mysqladmin flush-xxx , as como mysqladmin processlist . No se dan permisos para acceder a ninguna base de datos. Puede aadir tal privilegio posteriormente mediante un comando GRANT adicional.

Una cuenta tiene un nombre de usuario de dummy sin contrasea. Esta cuenta puede usarse slo desde el equipo local. No tiene ningn privilegio. El permiso USAGE en el comando GRANT permite crear una cuenta sin darle ningn privilegio. Tiene el efecto de

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

inicializar todos los privilegios globales a 'N'. Se asume que se otorgarn privilegios especficos posteriormente. Como alternativa a GRANT, puede crear la misma cuenta directamente mediante comandos INSERT y despus diciendo al servidor que recargue las tablas de permisos usando FLUSH PRIVILEGES:
shell> mysql --user=root mysql mysql> INSERT INTO user -> -> -> -> -> -> VALUES('localhost','monty',PASSWORD('some_pass'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); VALUES('%','monty',PASSWORD('some_pass'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); Reload_priv='Y', Process_priv='Y'; VALUES('localhost','dummy','');

mysql> INSERT INTO user

mysql> INSERT INTO user SET Host='localhost',User='admin', mysql> INSERT INTO user (Host,User,Password) mysql> FLUSH PRIVILEGES;

La razn de usar FLUSH PRIVILEGES al crear cuantas con INSERT es decir al servidor que vuelva a leer las tablas de permisos. De otro modo, los cambios no se tienen en cuenta hasta que se reinicie el servidor. ConGRANT, FLUSH PRIVILEGES no es necesario. La razn para usar la funcin PASSWORD() con INSERT es cifrar las contraseas. El comando GRANT cifra la contrasea, as que PASSWORD() no es necesario. El valor 'Y' activa permisos para las cuentas. Para la cuenta admin , puede emplear la sintaxis ms clara extendida INSERT usando SET. En el comando INSERT para la cuenta dummy account, slo las columnas Host, User, y Password en el registro de la tabla user tienen valores asignados. Ninguna de las columnas de permisos se asignan explcitamente, as que MySQL les asigna a todas el valor por defecto de 'N'. Esto es equivalente al funcionamiento de GRANT USAGE. Para inicializar una cuenta de super usuario, slo es necesario crear una entrada en la tabla user con las columnas de permisos inicializadas a 'Y'. Los privilegios de la tabla user son globales, as que no se necesitan registros en ninguna de las otras tablas de permisos.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Los siguientes ejemplos crean tres cuentas y les dan acceso a bases de datos especficas. Cada una de ellas tiene un nombre de usuario custom y contrasea obscure. Para crear las cuentas con GRANT, use los siguientes comandos:
shell> mysql --user=root mysql mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> -> -> -> -> -> -> -> -> ON bankaccount.* TO 'custom'@'localhost' IDENTIFIED BY 'obscure'; ON expenses.* TO 'custom'@'whitehouse.gov' IDENTIFIED BY 'obscure'; ON customer.* TO 'custom'@'server.domain' IDENTIFIED BY 'obscure';

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

Las tres cuentas pueden usarse de la siguiente manera:

La primera cuenta puede acceder a la base de datos bankaccount, pero slo desde el equipo local.

La segunda cuenta puede acceder la base de datos expenses, pero slo desde el equipo whitehouse.gov.

La tercera cuenta puede acceder la base de datos customer, pero slo desde el equipo server.domain. Para inicializar las cuentas custom sin usar GRANT, use los comandos INSERT como se explica para modificar las tablas de permisos directamente:
shell> mysql --user=root mysql mysql> INSERT INTO user (Host,User,Password) -> -> -> -> -> VALUES('localhost','custom',PASSWORD('obscure')); VALUES('whitehouse.gov','custom',PASSWORD('obscure')); VALUES('server.domain','custom',PASSWORD('obscure')); (Host,Db,User,Select_priv,Insert_priv, Update_priv,Delete_priv,Create_priv,Drop_priv) mysql> INSERT INTO user (Host,User,Password) mysql> INSERT INTO user (Host,User,Password) mysql> INSERT INTO db

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

-> -> -> -> -> -> -> -> -> ->

VALUES('localhost','bankaccount','custom', 'Y','Y','Y','Y','Y','Y'); (Host,Db,User,Select_priv,Insert_priv, Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('whitehouse.gov','expenses','custom', 'Y','Y','Y','Y','Y','Y'); (Host,Db,User,Select_priv,Insert_priv, Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('server.domain','customer','custom', 'Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db

mysql> INSERT INTO db

mysql> FLUSH PRIVILEGES;

Los primeros tres comandos INSERT aaden registros en la tabla user que permiten al usuario custom conectar desde los equipos con la contrasea dada, pero no otorga privilegios blobales (todos los privilegios se inicializan al valor por defecto 'N'). Los siguientes tres comandos INSERT aaden registros en la tabla db que otorgan privilegios a custom para las bases de datos bankaccount, expenses, y customer, pero slo cuando se accede desde los equipos apropiados. Como siempre, cuando modifique las tablas de permisos directamente, debe decirle al servidor que las recargue con FLUSH PRIVILEGES para que los cambios en los permisos tengan efecto. Si quiere dar a un usuario especfico acceso desde todas las mquinas dentro de un dominio dado (por ejemplo,mydomain.com), puede realizar un comando GRANT que use el carcter comodn '%' en la parte del equipo del nombre de cuenta:
mysql> GRANT ... -> -> -> ON *.* TO 'myname'@'%.mydomain.com' IDENTIFIED BY 'mypass';

Para hacer lo mismo modificando las tablas de permisos directamente, haga lo siguiente:
mysql> INSERT INTO user (Host,User,Password,...) -> VALUES('%.mydomain.com','myname',PASSWORD('mypass'),...); mysql> FLUSH PRIVILEGES;

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Desarrollo
1. Creacin de roles y Asignacin de Usuarios en MySQL.
Como primer paso debemos crear 2 usuarios que accedern a la base de datos ENOBI, y que tendrn diferentes privilegios, los usuarios sern admin y usuario, los cuales podrn insertar nuevos registros o solo realizar lectura de registros existentes, para la creacin de dichos usuarios utilizaremos la herramienta MySQL Workbench.

Nos dirigiremos a Manage Security, y en la pestaa Server Access Management, en la parte de abajo daremos click en Add Account.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Procederemos a asignar un nombre de usuario y una contrasea que deberemos ingresar 2 veces, haremos click en Apply, este procedimiento lo deberemos hacer dos veces para crear los dos usuarios que necesitamos para la prctica. A continuacin nos dirigiremos a la pestaa Schema Privileges donde asignaremos a cada usuario sus privilegios correspondientes, en dicha pestaa nos aparecer la siguiente ventana donde seleccionaremos a nuestro usuario admin, y daremos click en Add Entry.

Nos aparecer la siguiente ventana donde seleccionaremos la base de datos a la que nuestro usuario podr acceder y daremos click en Ok.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Despus de haber agregado nuestra entrada, nos encontraremos nuevamente en la pestaa Schema Privileges, para finalizar el proceso bastara con dar click en Select ALL, con esto estaremos asignndole todo los privilegios a nuestro usuario admin, sobre la base de datos ENOBI. Daremos click en Save Changes.

El proceso anterior deberemos repetirlo para la creacin de nuestro usuario usuario, la nica diferencia ser que a este solo le activaremos la opcin SELECT con esto estaremos diciendo que este usuario solo puede consultar informacin.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

2. Comunicacin a la Base de Datos con PHP.


Para la comunicacin a la base de datos mediante PHP, haremos uso de la herramienta Adobe Dreamweaver. Dicha Herramienta nos facilitara la tarea de la creacin de nuestros archivos PHP que contendrn nuestros formularios de comunicacin a la Base de Datos. Una vez en Dreamweaver procederemos a crear un nuevo sitio web.

Lo primero que deberemos hacer es darle un nombre a nuestro nuevo sitio web, y darle un nombre a la carpeta que contendr los archivos de nuestro sitio web, dicha carpeta deber est dentro de nuestra carpeta www de nuestro servidor apache, despus de esto iremos a la pestaa servidores.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

En la pestaa Servidores agregaremos uno dando click en el icono +, nos aparecer una ventana donde seleccionaremos un nombre para nuestro servidor, tambin en el campo Conectar Usando seleccionaremos Local/Red, de la misma manera seleccionaremos la carpeta que el servidor deber reconocer, dicha carpeta es nuestra carpeta Test que contendr nuestro sitio web, y finalmente designaremos una URL, que en nuestro caso ser http://localhost/Test/.

Para finalizar esta parte iremos a la pestaa Avanzados, y en el campo Modelo de Servidor seleccionaremos PHP MySQL, y daremos click en Guardar.

nicamente nos faltara habilitar la casilla De Prueba y dar click nuevamente en Guardar.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Procederemos a crear un nuevo archivo PHP, en el cual generaremos nuestros formularios.

Antes de generar nuestros formularios deberemos establecer la conexin a la base de datos, esto lo haremos en el men Ventana y seleccionando la opcin Base de Datos, al hacer lo anterior nos aparecer un lista donde se visualizaran todas nuestras conexiones, bastara con hacer click en el icono de +, para generar una nueva conexin.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Deberemos asignar un nombre a nuestra conexin, especificar nuestro servidor MySQL que en este caso es localhost, y especificar el usuario y contrasea que creamos previamente, asi como el nombre de la base de datos a la que accederemos, si elegimos una base de datos en la cual no tenemos permisos la conexin nos marcara error. Este proceso deberemos realizarlo dos veces, una por cada uno de los usuarios que creamos.

Una vez realizado lo anterior procederemos a insertar nuestros formularios de lectura e insercin, uno de cada uno por cada una de nuestras conexiones, en total tendremos 2 formularios para nuestra conexin usando nuestro usuario admin y 2 formularios para nuestra conexin usando el usuario usuario. Para realizar lo antes mencionado nos posicionaremos en nuestro archivo PHP que al momento est vaco, e iremos al men Insertar -> Objeto de Datos -> Juego de Registros. Nos aparecer la siguiente ventana.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Aqu seleccionaremos el conjunto de datos que deseamos usar, asignaremos un nombre que deseemos, y en conexin seleccionaremos nuestra conexin admin, y nuestra tabla cliente, con esto bastara, solo deberemos dar click en aceptar. Este procedimiento deberemos realizarlo una segunda vez pero utilizando nuestra conexin usuario, con esto habremos establecido la comunicacin a la misma base de datos, a la misma tabla, pero con dos usuarios diferentes que poseen diferentes privilegios.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Para continuar iremos al men Insertar -> Objeto de Datos -> Datos Dinmicos -> Tabla Dinmica, donde seleccionaremos nuestro juego de registros que usan nuestra conexin a la base de datos mediante nuestro usuario admin, y daremos aceptar, con esto habremos insertado una tabla donde se visualizaran todos los registros, esta tarea deberemos hacerla una segunda vez pero usando nuestra conexin con usuario usuario, en este caso ambos funcionaran debido a que ambos usuarios tienes privilegios para consultar informacin.

Para finalizar la creacin de nuestros formularios, deberemos insertar nuestro formulario de insercin de datos, usando nuestras dos conexiones, para esto iremos al men Insertar -> Objeto de Datos -> Insertar Registro -> Asistente de Formulario de Insercin de Registros, donde seleccionaremos nuestra conexin con usuario admin y daremos aceptar, este paso lo repetiremos para nuestro usuario usuario.

Finalmente deberemos guardar nuestro archivo PHP con el nombre de index.php, y procederemos a realizar las pruebas desde nuestro navegador web.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Como podemos ver la consulta de datos para ambos usuarios se muestra de manera correcta y sin problema.

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Finalmente probaremos la insercin de datos en donde, si intentamos ingresar un nuevo registro con nuestro usuario usuario nos deber mostrar el siguiente error debido a que no posee los privilegios para realizar inserciones.

3. Publicacin de Formularios PHP en la Web.


En esta seccin se proveen las URL en las cuales podr comprobarse la funcionalidad del ejercicio desarrollado. Para el usuario Admin que posee todos los privilegios: http://mtipachuca.com.previewdns.com/index_admin.php Para el usuario Usuario que posee solo privilegios de lectura: http://mtipachuca.com.previewdns.com/index.php

Maestra en Tecnologas de Informacin Administracin de Base de Datos Cuatrimestre Mayo Agosto 2012 Sede Pachuca

Conclusin
El uso de roles nos permite la gestin de grupos de usuarios asignando o revocando privilegios a un grupo entero con una sola accin, esto significa que la administracin de la seguridad en la base de datos se simplifica y agiliza, permitindonos tener un mejor control sobre nuestra base de datos as como una mejor seguridad debido a que a cada usuario individual se le asignan privilegios de acuerdo a su perfil de usuario dentro de nuestro sistema. El uso de herramientas como MySQL Workbench y Dreamweaver facilita enormemente la gestin de la seguridad as como la conexin a nuestra base de datos, dndonos herramientas y asistentes que nos llevan de la mano y nos permiten de manera muy rpida entablar una comunicacin con la base de datos y de la misma forma empezar a manipular los datos de nuestra base de datos.

Consultas Electrnicas
http://dev.mysql.com/doc/refman/5.0/es/user-account-management.html