Instalación y configuracion de phpmyadmin

Introducción.

Phpmyadmin es una excelente herramienta de administración de mysql vía web. Para poder utilizar phpmyadmin se requiere disponer de un servidor web con soporte php.

La herramienta permite que cualquier usuario de la base de datos que disponga de algún permiso, acceda y haga uso de dichos permisos. Identificándose con el usuario administrador de la base de datos (root) o con cualquier otro usuario que disponga de todos los privilegios, estarán habilitadas todas las características de la herramienta.

Instalación de phpmyadmin

La instalación de phpmyadmin se puede realizar de forma automática con apt-get, pero se trata de un paquete que no se encuentra en el 'repositorio principal' (main) de ubuntu, sino que se encuentra en el 'repositorio universo' (universe). Para que apt-get pueda instalar paquetes del repositorio universo, es necesario editar el archivo /etc/apt/sources.list y quitar la almohadilla de las líneas:
// Quitar almohadilla delante de las líneas, para descomentarlas
deb http://es.archive.ubuntu.com/ubuntu/ drapper universe
deb-src http://es.archive.ubuntu.com/ubuntu/ drapper universe
Posteriormente, tendremos que actualizar en nuestro PC, el contenido de los repositorios:
// Actualizar contenido de los repositorios
# apt-get update
Ahora sí, podremos instalar el paquete 'phpmyadmin' mediante el comando:

// Instalación de phpmyadmin
# apt-get install phpmyadmin

El programa de instalación crea un enlace simbólico en el DocumentRoot del servidor web para que la aplicación pueda ser accesible desde la url: http://ip-del-servidor-web/phpmyadmin/index.php. Si no se viera la aplicación en dicha url, quizás sea por algún aspecto de la configuración de apache. En tal caso, lo más sencillo sería mover la carpeta de phpmyadmin directamente dentro del DocumentRoot del servidor, mediante el comando:

// Colocar phpmyadmin en el servidor web y asignar propietario www
# mv /usr/share/phpmyadmin /var/www/ (en nuestro caso) # chown -R www /var/www/phpmyadmin

De ésta forma, es seguro que accediendo a http://ip-del-servidor-web/phpmyadmin/index.php nos aparecerá la página de autentificación de phpmyadmin:

Página de autentificación de phpmyadmin

Una vez que nos identifiquemos con un usuario y contraseña válidos, accederemos a la página principal de phpmyadmin desde la que podremos crear una nueva base de datos o realizar consultas y modificaciones sobre bases de datos ya existentes:

Página principal de phpmyadmin

Configuración de phpmyadmin

El archivo de configuración de phpmyadmin es el archivo:

// Archivo de configuración de phpmyadmin
/etc/phpmyadmin/config.inc.php

En dicho archivo de configuración hay que establecer los parámetros que permitirán a phpmyadmin conectar con mysql, que son:

host

En este parámetro habrá que indicar la IP del servidor mysql. Si el servidor web y el servidor mysql son la misma máquina, se deberá poner 'localhost' ó 127.0.0.1. En el caso de que sean máquinas diferentes, se deberá poner la IP del servidor mysql.

port

Aquí se especifica el puerto de conexión al servidor mysql. El puerto por defecto por el que sirve datos el servidor mysql es el 3306. Si en la configuración de mysql (archivo /etc/mysql/my.cnf) no se ha cambiado, no es necesario especificarlo ya que se usará el puerto 3306 por defecto.

auth_type

Para que phpmyadmin pueda acceder a mysql, es necesario autentificarse. Se admiten tres formas de autentificación:

user y password

En el caso de que hayamos elegido tipo de autentificación 'config', será necesario proporcionar el nombre de usuario y la contraseña con el que phpmyadmin accederá a mysql. En tal caso, la línea del password puede quedar comentada.

// Configuración por defecto en config.inc.php
Corresponden a las siguentes líneas en el archivo config.inc.php: $cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP $cfg['Servers'][$i]['port'] = ''; // MySQL port-blank default port $cfg['Servers'][$i]['auth_type'] = 'cookie'; // Authentication method $cfg['Servers'][$i]['user'] = 'root'; // MySQL user $cfg['Servers'][$i]['password'] = ''; // MySQL pass (only 'config')

Práctica: Mis Favoritos on line

En la siguiente práctica pondremos en marcha una aplicación web basada en php y mysql. Dicha aplicación la hemos bautizado como Mis Favoritos on-line y permitirá añadir, eliminar y visualizar mis direcciones de Internet favoritas. Los datos se almacenarán en una base de datos mysql.

Paso 1: Creación de la base de datos

Crearemos en mysql una base de datos llamada 'favoritos' y nos situaremos en ella.

// Crear base de datos
mysql> CREATE DATABASE favoritos; Query OK, 1 row affected (0.00 sec) mysql> USE favoritos; Database changed

Paso 2: Creación de la tabla

Crearemos una tabla llamada 'favoritos' en la base de datos 'favoritos'.

// Crear tabla (ojo: usar comilla simple invertida en nombres)
mysql> CREATE TABLE `favoritos` ( `numero` INT NOT NULL PRIMARY KEY , `url` VARCHAR( 50 ) , `descripcion` VARCHAR( 50 ) ); Query OK, 0 row affected (0.02 sec)

// Insertamos un registro en la tabla para que no esté vacía:
mysql> INSERT INTO `favoritos` ( `numero` , `url` , `descripcion` ) VALUES ('1', 'http://www.pntic.mec.es', 'Web del cnice'); Query OK, 1 row affected (0.00 sec)

Paso 3: Asignación de permisos a un usuario

Crearemos un usuario en mysql asignandole permisos sobre nuestra base de datos. Nuestro usuario se llamará 'cnice' y su contraseña será 'cnice'. Se podrá conectar desde el mismo equipo (localhost) y tendrá todos los privilegios sobre todas las tablas de nuestra base de datos 'favoritos':

// Conceder permisos
mysql> GRANT ALL ON favoritos.* to cnice@localhost identified by "cnice"; Query OK, 0 row affected (0.01 sec) mysql> flush privileges; // actualizar permisos Query OK, 0 row affected (0.01 sec)

Paso 4: Creación del script

Crearemos un script en php que accederá a mi base de datos y permitirá al usuario insertar registros y consultar el contenido de la tabla.

// Script PHP para el acceso a datos MySQL
<? ////////////////////////////////////////////////////////////////////////////// // // MisFavoritos on-line. (C) 2007 - CNICE. // Nombre del script: index.php // ////////////////////////////////////////////////////////////////////////////// // Parámetros de conexión con la base de datos define( "DB_HOST", "localhost" ); define( "DB_USER", "cnice" ); define( "DB_PASSWD", "cnice" ); define( "DB_NAME", "favoritos" ); error_reporting( 0 ); //Para que no muestre warnings ni errores ?> <HTML> <HEAD><TITLE> Favoritos - mysql </TITLE></HEAD> <H1>Favoritos</H1> <STYLE type="text/css"> <!--A {font-family: Arial; color: #00FF00}--> </STYLE></HEAD> <BODY> Favoritos on-line. Acceso a datos mysql desde páginas PHP.<HR> Elija la operación que desee efectuar:<BR> <TABLE BORDER> <TD><A HREF="index.php?Accion=Ayuda">Ayuda</A></TD> <TD><A HREF="index.php?Accion=Nuevo">Nuevo</A></TD> <TD><A HREF="index.php?Accion=Borrar">Borrar</A></TD> </TABLE> <HR> <? $idCon = mysql_connect( DB_HOST, DB_USER, DB_PASSWD ) or die( "Error en la conexión: " . mysql_error()); mysql_select_db( DB_NAME, $idCon ); echo "<TABLE BORDER>"; echo "<TR><TD>Número</TD><TD>URL</TD><TD>Descripción</TD></TR>"; //Mostramos el contenido de la tabla $cSql = "SELECT * FROM favoritos"; $idQry = mysql_query( $cSql, $idCon ); while ($idRec = mysql_fetch_array( $idQry )) { printf('<TR><TD>%s</TD><TD><A HREF="%s">%s</A></TD><TD>%s</TD></TR>',$idRec[0], $idRec[1], $idRec[1], $idRec[2]); } echo "</TABLE>"; $Accion= $_GET['Accion']; $numero=$_GET['numero']; $url=$_GET['url']; $descripcion=$_GET['descripcion']; switch ($Accion) { //--------------------------------- Visualizar Ayuda ------- case ('Ayuda'): echo "<HR>Las acciones disponibles son: <BR> <BR>"; echo "<TABLE BORDER>"; echo "<TR><TD>Ayuda: Muestra éste mensaje de ayuda </TD></TR>"; echo "<TR><TD>Nuevo: Crea un nuevo registro </TD></TR>"; echo "<TR><TD>Borrar: Elimina un registro </TD></TR>"; echo "</TABLE>"; echo "<HR>"; break; //-------------------------------------------- Nuevo ------- case ('Nuevo'): //Si no enviamos una url, pintamos el formulario if (isset($url)==FALSE){ echo '<FORM METHOD="GET" ACTION="index.php">'; echo '<INPUT TYPE=HIDDEN NAME="Accion" VALUE="Nuevo">'; echo 'Num.: <INPUT TYPE="text" NAME="numero"><BR>'; echo 'URL: <INPUT TYPE="text" NAME="url"><BR>'; echo 'Descripción: <INPUT TYPE="text" NAME="descripcion">'; echo '<INPUT TYPE="Submit" VALUE="Insertar Registro">'; echo '</FORM>'; } else{ $cSql = "INSERT INTO favoritos values ($numero,'$url','$descripcion')"; $idQry = mysql_query( $cSql, $idCon ); if ($idQry==FALSE){ echo "Error al añadir un registro"; } else{ echo "<BR>Registro $numero, $url, $descripcion añadido satisfactoriamente."; echo 'Clic <a href="index.php">aquí</a> para refrescar.'; } } break; //------------------------------------------- Borrar ------- case ('Borrar'): //Si no enviamos un NumReg, pintamos el formulario if (isset($numero)==FALSE){ echo '<FORM METHOD="GET" ACTION="index.php">'; echo '<INPUT TYPE=HIDDEN NAME="Accion" VALUE="Borrar">'; echo 'Introduzca Número de Registro a eliminar: <INPUT TYPE="text" NAME="numero">'; echo '<INPUT TYPE="Submit" VALUE="Aceptar">'; echo '</FORM>'; } else{ //Primero comprobamos si existe dicho registro $cSql = "SELECT * FROM favoritos WHERE numero = $numero"; $idQry = mysql_query( $cSql, $idCon ); $nfilas = mysql_num_rows($idQry); echo "Filas=$nfilas"; //Si no existe, no podemos borrarlo if ($nfilas==0){ echo "No existe el registro $numero. Imposible eliminar dicho registro."; } else{ $cSql = "DELETE FROM favoritos WHERE numero = $numero"; $idQry = mysql_query( $cSql, $idCon ); if ($idQry==FALSE) echo "Error al eliminar el registro $numero"; else{ echo "Registro $numero eliminado satisfactoriamente."; echo 'Clic <a href="index.php">aquí</a> para refrescar.'; } } } break; } ?> </BODY> </HTML>

Paso 5: Prueba del script

Una vez creado el script, debemos subirlo a nuestro servidor dentro del 'Raíz de documentos' del servidor web y acceder desde el navegador. Ejemplo, si dentro de nuestra carpeta /var/www hemos creado una carpeta llamada 'favoritos' y hemos subido el script con el nombre 'index.php', para probarlo debemos poner en el navegador: http://ip-del-servidor/favoritos/index.php