101482523-practica-4-y-5
Post on 02-Jan-2016
9 Views
Preview:
TRANSCRIPT
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Profesor:
MTI. Elizabeth Cortés Palma
Alumno:
Rubén Vázquez Cerón
Practica 4 y 5:
Usuarios y Roles en MySQL Usando PHP
1. Creación y Asignación de Roles a Usuarios en MySQL.
2. Comunicación a la Base de Datos Con PHP.
3. Publicación de Formularios PHP en la Web
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Introducción
Objetivo
Realizar la creación de roles en MySQL, así como la asignación de dichos roles a usuarios que
acceden a la base de datos.
Generación de una conexión a la base de datos a través de PHP, así como la creación de
formulación para consulta e inserción de datos a la base de datos.
Publicación de nuestros formularios PHP en la Web, a través de un hosting (Go Daddy).
Marco Teórico
Añadir nuevas cuentas de usuario a MySQL
Puede crear cuentas MySQL de dos formas:
Usando comandos GRANT
Manipulando las tablas de permisos MySQL directamente
El método preferido es usar comandos GRANT, ya que son más concisos y menos propensos a
errores. . GRANT está disponible desde MySQL 3.22.11.
Otra opción 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 cómo usar el programa cliente mysql para añadir 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 contraseña a la cuenta root, necesitará la opción --password o -p para
este comando mysql y también para los mostrados a continuación en esta sección.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Tras la conexión al servidor como root, puede añadir 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;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
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 contraseña
de some_pass. Ambas cuentas son cuentas de superusuario con plenos permisos para
hacer cualquier cosa. Una cuenta ('monty'@'localhost') puede usarse sólo 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 anónima para localhostcreada
por mysql_install_db tendría precedencia cuando monty conecte desde el equipo
local. Como resultado, monty se trataría como un usuario anónimo. La razón para ello es
que el usuario anónimo tiene un valor más específico en la columna Host que la
cuenta 'monty'@'%' y por lo tanto toma precedencia en la ordenación de la tabla user.
(La ordenación de la tabla user se discute en Sección 5.6.5, “Control de acceso, nivel 1:
Comprobación de la conexión”.)
Una cuenta tiene un nombre de usuario de admin y no tiene contraseña. Esta cuenta
puede usarse sólo 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 añadir tal privilegio posteriormente mediante un
comando GRANT adicional.
Una cuenta tiene un nombre de usuario de dummy sin contraseña. Esta cuenta puede
usarse sólo desde el equipo local. No tiene ningún privilegio. El permiso USAGE en el
comando GRANT permite crear una cuenta sin darle ningún privilegio. Tiene el efecto de
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
inicializar todos los privilegios globales a 'N'. Se asume que se otorgarán privilegios
específicos posteriormente.
Como alternativa a GRANT, puede crear la misma cuenta directamente mediante
comandos INSERT y después 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');
mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
-> Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;
La razón 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 razón para usar la función PASSWORD() con INSERT es cifrar las contraseñas. El
comando GRANT cifra la contraseña, así que PASSWORD() no es necesario.
El valor 'Y' activa permisos para las cuentas. Para la cuenta admin , puede emplear la
sintaxis más clara extendida INSERT usando SET.
En el comando INSERT para la cuenta dummy account, sólo las columnas Host, User,
y Password en el registro de la tabla user tienen valores asignados. Ninguna de las columnas
de permisos se asignan explícitamente, 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, sólo 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.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Los siguientes ejemplos crean tres cuentas y les dan acceso a bases de datos específicas.
Cada una de ellas tiene un nombre de usuario custom y contraseña 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';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON expenses.*
-> TO 'custom'@'whitehouse.gov'
-> IDENTIFIED BY 'obscure';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON customer.*
-> TO 'custom'@'server.domain'
-> IDENTIFIED BY 'obscure';
Las tres cuentas pueden usarse de la siguiente manera:
La primera cuenta puede acceder a la base de datos bankaccount, pero sólo desde el
equipo local.
La segunda cuenta puede acceder la base de datos expenses, pero sólo desde el
equipo whitehouse.gov.
La tercera cuenta puede acceder la base de datos customer, pero sólo 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'));
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('whitehouse.gov','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('server.domain','custom',PASSWORD('obscure'));
mysql> INSERT INTO db
-> (Host,Db,User,Select_priv,Insert_priv,
-> Update_priv,Delete_priv,Create_priv,Drop_priv)
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
-> VALUES('localhost','bankaccount','custom',
-> 'Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
-> (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');
mysql> INSERT INTO db
-> (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> FLUSH PRIVILEGES;
Los primeros tres comandos INSERT añaden registros en la tabla user que permiten al
usuario custom conectar desde los equipos con la contraseña dada, pero no otorga privilegios
blobales (todos los privilegios se inicializan al valor por defecto 'N'). Los siguientes tres
comandos INSERT añaden registros en la tabla db que otorgan privilegios a custom para las
bases de datos bankaccount, expenses, y customer, pero sólo 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 específico acceso desde todas las máquinas dentro de un dominio
dado (por ejemplo,mydomain.com), puede realizar un comando GRANT que use el carácter
comodín '%' 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;
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Desarrollo 1. Creación de roles y Asignación de Usuarios en MySQL.
Como primer paso debemos crear 2 usuarios que accederán a la base de datos ENOBI, y que tendrán
diferentes privilegios, los usuarios serán admin y usuario, los cuales podrán insertar nuevos registros o solo
realizar lectura de registros existentes, para la creación de dichos usuarios utilizaremos la herramienta
MySQL Workbench.
Nos dirigiremos a Manage Security, y en la pestaña Server Access Management, en la parte de abajo
daremos click en “Add Account”.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Procederemos a asignar un nombre de usuario y una contraseña 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 práctica.
A continuación nos dirigiremos a la pestaña “Schema Privileges” donde asignaremos a cada usuario sus
privilegios correspondientes, en dicha pestaña 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.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Después de haber agregado nuestra entrada, nos encontraremos nuevamente en la pestaña “Schema
Privileges”, para finalizar el proceso bastara con dar click en “Select ALL”, con esto estaremos asignándole
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 creación de nuestro usuario “usuario”, la única diferencia
será que a este solo le activaremos la opción “SELECT” con esto estaremos diciendo que este usuario solo
puede consultar información.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
2. Comunicación a la Base de Datos con PHP.
Para la comunicación a la base de datos mediante PHP, haremos uso de la herramienta Adobe
Dreamweaver. Dicha Herramienta nos facilitara la tarea de la creación de nuestros archivos PHP que
contendrán nuestros formularios de comunicación 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, después de esto iremos a la pestaña servidores.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
En la pestaña “Servidores” agregaremos uno dando click en el icono +, nos aparecerá una ventana donde
seleccionaremos un nombre para nuestro servidor, también 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 pestaña 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.
Maestría en Tecnologías de Información Administración 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 conexión a la base de datos, esto lo
haremos en el menú Ventana y seleccionando la opción 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 conexión.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Deberemos asignar un nombre a nuestra conexión, especificar nuestro servidor MySQL que en este caso es
localhost, y especificar el usuario y contraseña 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 conexión 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 inserción, uno de
cada uno por cada una de nuestras conexiones, en total tendremos 2 formularios para nuestra conexión
usando nuestro usuario “admin” y 2 formularios para nuestra conexión usando el usuario “usuario”.
Para realizar lo antes mencionado nos posicionaremos en nuestro archivo PHP que al momento está vacío, e
iremos al menú Insertar -> Objeto de Datos -> Juego de Registros. Nos aparecerá la siguiente ventana.
Maestría en Tecnologías de Información Administración 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
conexión seleccionaremos nuestra conexión admin, y nuestra tabla cliente, con esto bastara, solo
deberemos dar click en aceptar.
Este procedimiento deberemos realizarlo una segunda vez pero utilizando nuestra conexión usuario, con
esto habremos establecido la comunicación a la misma base de datos, a la misma tabla, pero con dos
usuarios diferentes que poseen diferentes privilegios.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Para continuar iremos al menú Insertar -> Objeto de Datos -> Datos Dinámicos -> Tabla Dinámica, donde
seleccionaremos nuestro juego de registros que usan nuestra conexión 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 conexión con usuario
“usuario”, en este caso ambos funcionaran debido a que ambos usuarios tienes privilegios para consultar
información.
Para finalizar la creación de nuestros formularios, deberemos insertar nuestro formulario de inserción de
datos, usando nuestras dos conexiones, para esto iremos al menú Insertar -> Objeto de Datos -> Insertar
Registro -> Asistente de Formulario de Inserción de Registros, donde seleccionaremos nuestra conexión 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.
Maestría en Tecnologías de Información Administración 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.
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Finalmente probaremos la inserción 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. Publicación de Formularios PHP en la Web.
En esta sección 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
Maestría en Tecnologías de Información Administración de Base de Datos Cuatrimestre Mayo – Agosto 2012 Sede Pachuca
Conclusión El uso de roles nos permite la gestión de grupos de usuarios asignando o revocando privilegios a un grupo
entero con una sola acción, esto significa que la administración de la seguridad en la base de datos se
simplifica y agiliza, permitiéndonos 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 gestión de la
seguridad así como la conexión a nuestra base de datos, dándonos herramientas y asistentes que nos llevan
de la mano y nos permiten de manera muy rápida entablar una comunicación con la base de datos y de la
misma forma empezar a manipular los datos de nuestra base de datos.
Consultas Electrónicas
http://dev.mysql.com/doc/refman/5.0/es/user-account-management.html
top related