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 y MySQL.

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 tal y como se explica en el capítulo Trucos.

Posteriormente, tendremos que actualizar en nuestro PC, el contenido de los repositorios:

// Actualizar contenido de los repositorios
sudo apt-get update

Ahora sí, podremos instalar el paquete 'phpmyadmin' mediante el comando:

// Instalación de phpmyadmin
sudo 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 y asignar al usuario www-data que es el usuario con el que se ejecuta el apache, para que apache pueda acceder a dicha carpeta:

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

De esta 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:
  • config: permite que el nombre de usuario y la contraseña se especifiquen en el archivo config.inc.php
  • http: el usuario deberá introducir nombre y contraseña para acceder a la ruta web
  • cookie: el usuario deberá introducir nombre y contraseña para acceder a la aplicació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'] = 'secreta'; // 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. Para ello, abriremos una consola de comandos y ejecutaremos el comando: mysql -u root -p. Una vez hayamos entrado en mysql, podremos empezar a ejecutar sentencias SQL:
// 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.ite.educacion.es', 'Web del INTEF');
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á 'ite' y su contraseña será 'contraite'. 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 ite@localhost identified by "contraite";
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
// Guardar en /var/www/favoritos/index.php
//
//////////////////////////////////////////////////////////////////////////////


// Parámetros de conexión con la base de datos
define( "DB_HOST", "localhost" );
define( "DB_USER", "ite" );
define( "DB_PASSWD", "contraite" );
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

Pregunta Verdadero-Falso
Para utilizar phpmyadmin es necesario saber SQL
Verdadero Falso