domingo, 29 de marzo de 2009

Manual de PHP 69. MySql. Ficheros MySQL

La aplicación MySql

Una de las opciones más útiles de PHP es la posibilidad de gestionar bases de datos en ordenadores remotos.

Existen multitud de programas de servidores de bases de datos y PHP dispone de funciones para el manejo de muchos de ellos tales como:

  • FilePro
  • dBase
  • DBM
  • Microsoft SQL
  • PostgreSQL
  • mSQL
  • InterBase
  • MySQL
Nuestra opción por MySQL obedece a que es uno de los gestores de bases de datos SQL más populares, es muy eficiente y, además, es gratuito (Open Source).

El sintagma SQL es el acrónimo de Structured Query Language, es decir, Lenguaje estructurado de consultas.

Bases de datos y tablas

Como verás más adelante, una base de datos no es otra cosa que un directorio que contiene tablas.

Las tablas son las que contienen los datos y en consecuencia son el elemento verdaderamente importante, dado que no es demasiado relevante que esos datos estén en uno u otro directorio, lo verdaderamente importante es que estén y que sean accesibles y manejables.

Si es este tu primer contacto con el mundo de las bases de datos, quizá sea importante conocer su argot ya que en adelante tendremos que referirnos a tablas, campos, registros e índices y quizá no esté de más explicar un poco esas ideas.

Pensemos en la base de datos –directorio– como un armario archivador de nuestro Centro e imaginemos que dentro de él hay una serie de cajonestablas– en los que se puede guardar una buena cantidad de documentos con formato idéntico –registros– tales como: matrículas, fichas de alumnos, etcétera.

Cada uno de estos tipos de documento tendría las mismas casillascampos–, con la única diferencia de que los datos contenidos en esos campos –de igual forma, dimensión y tamaño en todos los registros– serían los que diferenciarían un documento de otro.

En una tabla MySQL el fichero con extensión .frm contiene precisamente el documento original de los registros y, de la misma forma que ocurre con los impresos originales, contiene la forma, dimensión y tamaño de cada una de las casillas (campos) de cada formulario (registro).

El fichero .MYD contiene los datos, es decir todo lo que hay escrito en cada una de las casillas de cada uno de los impresos de ese cajón (tabla) concreto.

No hemos aludido aún a los ficheros con extensión .MYI y son un elemento importante. Contienen los índices, que –como su propio nombre indica– cumplen una función idéntica a los índices de los libros. A través de ellos resulta mucho más rápido encontrar una determinada información y al igual que ocurre con los libros –índice general, onomástico, etcétera– pueden ser varios y con contenidos distintos.

¿Cómo empezar con las bases de datos?

De igual modo que ocurriría en el símil anterior, al instalar MySQL ya creamos el armario archivador –el directorio data– y también dos cajoncitos –las bases de datos mysql y test– pero por pura cuestión de orden vamos a necesitar algún otro armario para poder guardar nuestras cosas.

Lo razonable será empezar creando nuestros armarios (bases de datos) para que posteriormente podamos ir diseñando los documentos –los campos y la estructura– de cada uno de los tipos de impreso (tablas) que vayamos a manejar.

Nuestras bases de datos

Utilizaremos dos bases de datos distintas. Una de ellas –a la que llamaremos ejemplos– contendrá todos los ejemplos que vayamos desarrollando y la otra –practicas– será donde habrás de insertar las tablas que irás elaborando en los ejercicios y en la Actividad Final del Curso.

Los ejemplos aún no están creados y serás tú quien lo vaya haciendo medida que avancemos en esta parte del curso. Lo haremos de forma muy similar a la que hemos visto en páginas anteriores.

Según vayamos desarrollando los contenidos, insertaremos ejemplos de código fuente –de forma similar a la de temas anteriores– y cuando sea necesario crear bases de datos o tablas pondremos un recuadro rojo sobre el que deberás ir pulsando para auto generar los ejemplos.

En tales casos, no olvides hacerlo pues esa será la forma en la que progresivamente vayamos creando elementos necesarios para ser utilizados en los ejemplos posteriores.

Servidores activos

De ahora en adelante, para seguir el Curso vamos a necesitar tener siempre activos tanto el servidor Apache como MySQL. De no hacerlo así, nos aparecerá un mensaje de error diciendo:

Can't connect to MySQL server on 'localhost' (10061)

Si ello te ocurriera, comprueba el semáforo. Probablemente esa será la causa del error.

Organización de la información


Hemos instalado MySQL en el directorio c:\mysql y durante el proceso de instalación se creó un subdirectorio llamado data que es el destinado a albergar todas las bases de datos que vayamos creando.


Como puedes ver en la tabla siguiente, durante la instalación se crearon dos bases de datos llamadas mysql y test.








El directorio MySQL
Las carpetas del subdirectorio data de c:\mysql corresponden a cada una de las bases de datos que contiene Cada una de las tablas que contiene una base de datos tiene tres ficheros con extensiones .frm, MYD y MYI


Los ficheros con extensión .frm contienen la estructura de cada tabla, los MYD los datos y los que tienen extensión .MYI contienen los índices de esa tabla.


En la instalación también se crearon seis tablas en la base de datos mysql. Sus nombres –puedes verlos en la imagen– son: user, db, func, host,
tables_priv y columns_priv.


La tabla user –la más importante para nuestros fines– contiene información sobre los usuarios, desde qué máquinas pueden acceder a nuestro servidor MySQL, sus claves y contraseñas y los permisos de acceso de cada uno de ellos.


Las restantes contienen información sobre las máquinas que pueden acceder al sistema, las bases de datos a las que tendrá acceso cada usuario y las limitaciones o restricciones que eventualmente pudieran establecerse.



El uso de los tres ficheros anteriores, es condición de las tablas tipo MyISAM que es el tipo, por defecto, que utiliza MySQL 4.0. Otros tipos, que veremos en temas posteriores, tales como InnoDB almacenan la información con una estructura diferente.

La tabla user


Activemos nuestro servidor MySQl que, como recordarás, arrancaba pulsando en el icono winmysqladmin.exe situado en c:\mysql\bin y que, como recordarás también, nos colocaba un semáforo verde en la parte derecha de la barra del menú de Windows.


Una vez activo el servidor MySQL ya podemos utilizar phpMyAdmin. Lo habíamos instalado en un subdirectorio de htdocs llamado myadmin. Así que accedamos a través de la dirección: http://localhost/MyAdmin/ y se nos abrirá una página como la que sigue:




PHPmyAdmin

Elegiremos la base de datos mysql

Al seleccionar mysql en el menú de la izquierda y pulsar sobre mysql (en negro en la parte superior de la lista de tablas) aparecerá la lista que está a la derecha de esta imagen.


Allí vemos la tabla user y un enlace activo que dice Examinar. Si pulsamos sobre el podremos ver un contenido similar a este que vemos aquí debajo.





Como ves, hay tres usuarios y dos de ellos como nombre root y ninguna contraseña han sido creados automáticamente durante la instalación. El tercero de ellos –el usuario pepe– es el que hemos creado durante el proceso de instalación


Esta configuración es insegura ya que con los nombres de usuario por defecto –root– y sin contraseña cualquiera podría acceder y manipular las bases de datos.


Más adelante podremos borrar esos usuarios pero, por el momento, dejémoslos así y añadamos un nuevo usuario.


Regresemos al menú anterior y pulsemos en la opción Insertar correspondiente a la tabla user.




Escribamos localhost en el campo Host, jose en el campo User, josefa en el campo Password y marquemos todas las opciones –una lista bastante larga por cierto– como YES (Y) y –muy importante– seleccionemos la función PASSWORD para el campo del mismo nombre.


Una vez realizado el proceso anterior deberá quedarnos como aparece en la imagen. Pulsaremos en el botón Continúe que hay al final de la página y habremos dado de alta al usuario jose con todos los privilegios para gestionar las bases de datos.




Si regresamos de nuevo a Examinar veremos que ya ha sido incluido el nuevo usuario y que el campo contraseña aparece encriptado como consecuencia de haber aplicado la función PASSWORD para garantizar la privacidad del usuario. MySQL requiere esta encriptación.


Respecto a los YES, la explicación es sencilla. Esas opciones permiten habilitar permisos para determinadas operaciones dentro de las bases de datos y lo único que hemos hecho ha sido conceder todas la facultades de gestión al usuario pepe.

Creación de un fichero INCLUDE


En los scripts PHP con los que manejemos las bases de datos vamos a necesitar insertar continuamente: nombre del servidor, nombre de usuario y contraseña.


Tanto la comodidad como la privacidad que hemos mencionado en páginas anteriores aconsejan guardar los datos de usuario en lugar seguro. Así que vamos a crear un fichero –llamémosle mysql.inc.php– idéntico al que tenemos aquí debajo,(podemos copiar y pegar) y guardémoslo en nuestro directorio de seguridad que –como recordarás– estaba en c:\apache\seguridad.

<?
$mysql_server="localhost";
$mysql_login="pepe";
$mysql_pass="pepa";

?>




Fuente:

No hay comentarios: