DOMINAR PHP MYADMIN PARA ADMINISTRACION MySQL PDF
DOMINAR PHP MYADMIN PARA ADMINISTRACION MySQL PDF
Marc Delisle
BIRMINGHAM - MUMBAI
Dominar phpMyAdmin para una administración
efectiva de MySQL
Editado por Packt Publishing Ltd.32 Lincoln Road Olton Birmingham, B27 6PA, UK
ISBN 978-1-90481-198-5
www.packtpub.com
Autor Presentación
Marc Delisle Niranjan Jahagirdar
Indexadores
Revisor técnico
Vijay Tase
Garvin Hicking Ashutosh Pande
Alexander Turek
Corrector
Programador general Chris Smith
Louay Fatoohi
Señadora de la cubierta
Helen Wood
Editor Técnico
Niranjan Jahagirdar Traductor
Maika Vicente Navarro
Sobre el autor
Marc Delisle empezó a contribuir con phpMyAdmin en diciembre de 1998, cuando
hizo la primera versión multi idioma. Ha contribuido de forma activa hasta mayo del
2001 como programador y administrador de proyectos. Ahora phpMyAdmin forma
parte de su vida.
Autenticación HTTP 27
Autenticación cookie 27
Seguridad 29
Protección a nivel del directorio 29
Control basado en la IP 30
Reglas 30
Orden de interpretación de las reglas 31
Restringir la lista de bases de datos 32
Proteger los datos en transmisión 32
Actualizar phpMyAdmin 33
Resumen 33
Capítulo 3: Información general de la interfaz 35
Paneles y ventanas 35
Paneles de inicio de sesión 35
Paneles de la izquierda y de la derecha 35
Página de inicio 36
Vistas 36
Ventana consulta 36
Página de arranque 36
Configuración de los títulos de la ventana 37
Configuración general de los iconos 37
Clasificación natural para los nombres de las bases de datos y las tablas 38
Selección de idioma 38
Temas 40
Configuración de los temas 40
Elección de temas 40
Panel de la izquierda 41
Lista de bases de datos y tablas 42
Modo instalación mínima 43
Atajo a las estadísticas de la tabla 44
Examinar con rapidez una tabla 45
Modo completo 45
Presentación jerárquica de tablas dentro de una base de datos 46
Elección de lista de servidores 48
Panel de la derecha 49
Página de inicio 49
Vista base de datos 50
Vista tabla 52
Vista servidor 53
Iconos para la página de inicio y menú tabulador 53
Ventana consulta 54
[ ii ]
Tabla de contenidos
[ iii ]
Tabla de contenidos
[ iv ]
Tabla de contenidos
[]
Tabla de contenidos
[ vi ]
Tabla de contenidos
Mostrar 182
Modificar la consulta 182
Criterios 183
Ajustar el número de filas de criterios 185
Ajustar el número de columnas de criterios 187
Joins automáticas 187
Ejecutar la consulta 188
Resumen 189
Capítulo 14: Marcadores 191
Crear un marcador después de ejecutar con éxito una consulta 192
Almacenar un marcador antes de mandar una consulta 193
Marcadores multi-consulta 194
Recuperar de la lista de marcadores 194
Ejecución de un marcador 195
Manipulación de un marcador 195
Marcadores públicos 195
Consulta inicial por defecto para una tabla 196
Marcadores parámetros 197
Crear un marcador parametrizado 197
Pasar un valor de parámetro a marcador 198
Ejecutar marcadores desde pma_bookmark 198
Resumen 199
Capítulo 15: Documentación del sistema 201
Vista impresión de la base de datos 201
Vista impresión selectiva de la base de datos 202
Vista impresión de la tabla 203
Diccionario de datos 203
Esquema relacional en PDF 204
Añadir una tercera tabla a nuestro modelo 204
Editar páginas PDF 205
Planear la página 205
Crear una página nueva 206
Editar una página 206
Presentar una página 207
Una nota sobre las fuentes que se usan 210
Resumen 210
Capítulo 16: Transformaciones basadas en MIME 211
Configuración de las columnas MIME 212
Tipo MIME 212
Transformaciones navegador 213
Opciones de las transformaciones 213
[ vii ]
Tabla de contenidos
[ viii ]
Tabla de contenidos
[ ix ]
Tabla de contenidos
[]
Introducción
MySQL, usado por millones de programadores, es la base de datos de código
abierto más popular, soporta numerosos sitios Web grandes, dinámicos y
aplicaciones. MSQL ha adquirido esta amplia popularidad debido a su código
abierto, su fiabilidad, su robustez y soporte para varias plataformas. La existencia
de phpMyAdmin también ha ayudado con esta popularidad, la herramienta de
administración estándar, industrial que hace que administrar bases de datos sea
fácil para los programadores experimentados y los novatos. La poderosa interfaz
gráfica que ofrece a MySQL, ha convertido a phpMyAdmin en una herramienta
indispensable para MySQL y los programadores.
Además nos permite realizar varias operaciones en las tablas a través de su interfaz
gráfica. phpMyAdmin también nos permite ejecutar comandos SQL complejos para
tareas que no se pueden ejecutar a través de su interfaz. Esta es la característica que
cubre el capítulo 12. El capítulo 13, que cubre la búsqueda multi-tabla, complementa al
capítulo 9 y nos muestra como buscar una tabla o una base de datos entera.
Crear y mantener una buena información sobre la estructura de los datos es crucial,
particularmente para los proyectos de equipo. phpMyAdmin nos permite hacerlo,
esta característica se explica en el capítulo 15. Este capítulo nos muestra como generar
una tabla sencilla, listas de columnas y usar diccionarios de datos para completar
las listas de columnas, generar un esquema personalizado relacional para tablas en
formato PDF.
[]
Introducción
para administrar las cuentas de usuarios, sus privilegios y como verificar el estado
del servidor.
El capítulo 18, el último capítulo del libro, cubre diferentes temas del procedimiento
para solucionar anomalías y soporte. Cubre los mensajes de error más comunes y los
problemas de configuración. El capítulo también incluye información sobre como y
donde se puede obtener soporte técnico.
• Linux o Windows
• MySQL
• Apache o IIS
• phpMyAdmin
Convenciones
En este libro verá diferentes estilos de texto que distinguen entre diferentes tipos de
información. Aquí hay algunos ejemplos de estos estilos y una explicación de
su significado.
Hay tres estilos para el código. Código que aparece en un texto como sigue: "El
parámetro $cfg['PropertiesIconic'] puede tener los valores TRUE, FALSE o
'both'.
Cuando queremos destacar una parte particular del bloque de código, las líneas
importantes están en negrita:
CREATE TABLE 'autor' (
'isbn' varchar(25) NOT NULL default '',
'autor_id' int(11) NOT NULL default '0',
PRIMARY KEY ('isbn'),
KEY 'autor_id' ('autor_id')
) TYPE =MyISAM COMMENT= 'tiene la descripción del libro';
[]
Introducción
Si hay un libro que necesita y que le gustaría que publicásemos, por favor mándenos
una nota en Sugerir título desde http://www.packtpub.com o en el correo
electrónico [email protected].
[]
Introducción
Errata
A pesar que hemos tomado medidas para asegurarnos de la fidelidad de nuestro
contenido, puede haber errores. Si encuentra un error en uno de nuestros libros;
quizá un error en el texto o en el código, le agradeceríamos si nos mandase un
informe sobre el mismo. Si lo hace puede ahorrar frustración al resto de lectores y
ayudar a mejorar las versiones siguientes del libro.
Preguntas
Puede contactar con nosotros en [email protected] si tiene un problema con
algún aspecto del libro y haremos lo que podamos para ayudarle.
[]
Introducción a phpMyAdmin
¡Bienvenido a la red evolucionada! En los últimos años, la red ha cambiado de forma
drástica. Durante su infancia, la red era un medio usado para transmitir información
estática ("¡Mira mi página inicial está en la red!"). Ahora, gran parte de la red porta
información que se genera dinámicamente con programas de aplicaciones, en
los que, tanto empresas como individuos confían para crear sus intrarredes y sitios
Web públicos.
Debido a los claros beneficios de las bases de datos (tienen mejor acceso y una mejor
estructura de la información), la mayoría de aplicaciones Web están controladas
por bases de datos. La sección de entrada que se usa es el conocido navegador (que
se despliega con rapidez) y que tiene un sistema de base de datos en el servicio de
fondo. Las aplicaciones proveen la interfaz entre el navegador y la base de datos.
Aquellos que no usan un sitio Web controlado por una base de datos, hoy en día,
no están usando este medio con su máxima capacidad. Además, podrían quedarse
desfasados frente a competidores que han hecho el cambio. De este modo, no es
cuestión de si deberíamos implementar un sitio controlado por una base de datos, sino
sobre cuando y, aún más, como implementarlo.
¿Por qué usar aplicaciones Web? Porque mejoran la experiencia de los usuarios y les
implica en el proceso al crear opciones como las siguientes:
Hoy en día, WWW debería referirse a onda mundial (World-Wide Wave), una gran
onda que modifica de manera profunda la manera de pensar de los programadores
sobre las interfaces de usuario, la presentación de datos y, lo más importante, cómo
llegan los datos al usuario y vuelven al centro de datos.
MySQL, que es el estándar SQL más compatible con ANSI-92, es un sistema de bases
de datos conocido por su velocidad, robustez y su pequeña conexión a overhead, lo
cual es importante en un contexto de red en el que las páginas se tienen que servir lo
más rápido posible.
¿Qué es phpMyAdmin?
PhpMyAdmin es una aplicación Web que está escrita en PHP y que contiene
códigos cliente en XHTML, CSS y JavaScript. Provee una interfaz Web completa
para administrar las bases de datos MySQL y se reconoce en todo el mundo como la
aplicación líder en este dominio.
[]
Capítulo 1
[]
Introducción a phpMyAdmin
Historia
La primera versión interna (0.9.0) fue codificada por Tobias Ratschiller y tiene esta
fecha 09/09/1998. Más tarde lanzó la versión 1.0.1 el 26/10/1998. Las versiones
anteriores se ofrecían en el sitio de Tobias: http:/www.phpwizard.net (este sitio ya
no se asocia con él). Como Tobias comentó en las notas que le acompañaban:
Comparado con la versión de hoy en día (seis años después de la salida del original),
la primera versión tenía unas características limitadas, pero que sin embargo se
podía usar para crear bases de datos, editar su estructura, entrar y recuperar datos.
Fíjese en la figura que sigue, el recuadro de la izquierda ya era una lista de nombres
de bases de datos (aún no eran nombres de tablas) y en el recuadro derecho estaba el
área de trabajo para administrar una base de datos o una tabla.
[ 10 ]
Capítulo 1
Esta versión tenía arreglos de seguridad, siete lenguas nuevas (con detección
dinámica de lenguas), el código se había reescrito para que fuese compatible con
CSS2 y XHTML 1.0, siguiendo las pautas de codificación de PEAR. La característica
de los marcadores apareció en esta versión.
El 11/08/2002, se lanzó la versión 2.3.0. Había habido tantas características que las
páginas se estaban haciendo demasiado grandes en el plano vertical, así que esta
versión fue la "gran versión divida", presentando sub-páginas por cada tabla y grupo
de características de base de datos.
El equipo comenzó con un nueva planificación para lanzar una nueva versión menor
cada dos meses (2.3.1, 2.3.2...). El 23/02/2003, la versión 2.4.0 incluía un nuevo
servicio de administración de servidor/usuario. Entonces, el 11/05/2005, el número
de versión cambió a 2.5.0 para celebrar el nuevo sistema de transformación de celdas
tipo MIME.
La versión del momento, 2.6.0, soporta la nueva extensión mysqli disponible en PHP
5, para un mejor resultado y una seguridad mejorada. La interfaz de esta versión se
ha rediseñado para incluir nuevos iconos y un administrador de temas. Todas estas
características están explicadas en este libro.
[ 12 ]
Capítulo 1
[ 13 ]
Introducción a phpMyAdmin
Resumen
En este capítulo hemos hablado sobre;
[ 14 ]
Instalación de phpMyAdmin
Ha llegado la hora de instalar el producto (hay varias manera de hacerlo) y darle una
configuración mínima antes de usarlo por primera vez.
Fase de descarga
Hay varios archivos disponibles en la sección descargas (Downloads) de http://
www.phpmyadmin.net. Puede que encuentre más de una versión allí; descárguese
siempre la última versión estable. Sólo tenemos que descargar un archivo
que incluye todos los archivos de lenguas y cargas sin importar la plataforma
(navegador, servidor Web, MySQL o versión PHP).
Sin embargo, para PHP es diferente, si estamos usando un servidor que sólo soporta
PHP3, tendremos que descargar un archivo con .php3 en su nombre. En este caso,
mientras seguimos las siguientes instrucciones, tendremos que transponer .php3
cada vez que hablamos de ficheros .php.
Los archivos que se ofrecen tienen varias extensiones: .zip, .bz2, .gz. Descargue
un fichero con una extensión para la que tenga el extractor correspondiente. .zip es
el formato de archivo más universal en el mundo de Windows, a pesar que es más
grande que .gz o .bz2 (comunes en el mundo Linux/Unix).
El siguiente paso depende de la plataforma que estemos usando, las secciones que
vienen detallan el proceso para algunas de las plataformas más comunes. Puede ir
directamente a la sección que le interese.
[ 16 ]
Capítulo 2
Use cualquier mecanismo que su extractor de archivos le ofrezca para guardar todos
los archivos, incluyendo subdirectorios, en algún lugar de su espacio de trabajo.
Aquí hemos escogido c:\, de modo que se crearía un directorio c:\phpmyAdmin-xxx
cuando haya terminado la extracción.
Este fichero contiene caracteres especiales (fin de línea estilo Unix), de modo que
debemos abrirlo con un editor de texto que entienda este formato. Si no usamos un
editor de texto adecuado, el archivo que se nos mostrará tendrá líneas muy largas.
Ahora que el fichero está abierto, iremos a la sección Configuración básica y seguiremos
las instrucciones. Guardaremos el fichero (en formato texto) y volvemos aquí.
[ 17 ]
Instalación de phpMyAdmin
Luego nos aseguramos que los premisos y la propiedad del directorio y los archivos
son apropiados para nuestro servidor Web; el usuario o grupo del servidor Web
debe ser capaz de leerlos.
Más tarde usamos un editor de texto para abrir el fichero config.inc.php que está
en el directorio recién creado.
[ 18 ]
Capítulo 2
Configuración básica
Antes de continuar, podemos renombrar el directorio
phpMyAdmin-x.x.x con un nombre más fácil de recordar como
por ejemplo phpMyAdmin, phpmyadmin, admin o lo queramos. De
este modo, nosostros o nuestros usuarios visitaremos una URL fácil
de recordar para conectar phpMyAdmin.
El archivo config.inc.php
Ahora echemos un vistazo al archivo config.inc.php. Este archivo contiene
código PHP válido que define la mayoría de los parámetros (expresados a través de
las variables PHP) y que podemos cambiar para ajustar phpMyAdmin a nuestras
necesidades. También hay comentarios PHP normales, allí podemos comentar
nuestros cambios.
En esta sección se explican sólo los parámetros que necesitamos cambiar para hacer
que phpMyAdmin funcione. El resto de parámetros se discutirán en los capítulos en
los que se explican las características correspondientes.
[ 19 ]
Instalación de phpMyAdmin
PmaAbsoluteUri
El primer parámetro que hay que mirar es $cfg['PmaAbsoluteUri'] = ''; .
Luego tendremos que cambiar este otro parámetro cambiando FALSE por TRUE:
$cfg['PmaAbsoluteUri_DisableWarning'] = TRUE;
Con esto eliminaremos el mensaje de alarma que hemos visto al iniciar phpMyAdmin
y demostraremos que nos hemos ocupado del parámetro absoluto URI.
Si examinamos sólo los parámetros normales del servidor (el resto de los
parámetros se cubrirán a partir del capítulo 11), para cada sección del servidor
veremos algo parecido:
$i++;
$cfg['Servers'][$i]['host'] = '';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$ cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['compress'] = '';
$cfg['Servers'][$i]['controluser'] = '';
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['auth_type'] = '';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['only_db'] = '';
$cfg['Servers'][$i]['verbose'] = '';
[ 20 ]
Capítulo 2
Esta característica también se puede usar para ocultar el nombre del proveedor de
servidor real a los usuarios.
Extensión
El mecanismo tradicional mediante el cual PHP puede comunicarse con el servidor
MySQL, disponible en PHP antes de la versión 5, es la extensión mysql. Esta
extensión todavía está disponible en PHP 5, pero se ha desarrollado una nueva
llamada mysqli, es mejor para PHP 5 debido a su rendimiento mejorado y su soporte
de todas las funcionalidades de la familia MySQL 4.1.x. Esta extensión está diseñada
para trabajar con la versión 4.1.3 o superior de MySQL.
Otro parámetro importante (que no es específico de los servidores pero que se aplica
a todas las definiciones del servidor) es a $cfg['PersistentConnections']. Este
parámetro, cuando está configurado TRUE, en todos los servidores que conectemos
con la extensión mysql, ordena a PHP que mantenga la conexión al servidor
MySQL abierta. Esto acelera la interacción entre PHP y MySQL. Sin embargo, si
está configurado FALSE por defecto en config.inc.php, es porque las conexiones
permanentes causan un empobrecimiento de los recursos del servidor: MySQL
rechaza nuevas conexiones. Por esta razón, esta opción ni siquiera está disponible en
la extensión mysqli.
connect_type
Tanto las extensiones mysql y mysqli usan un socket (enchufe) automáticamente
para conectar a MySQL si el servidor es localhost. Mire esta configuración:
[ 21 ]
Instalación de phpMyAdmin
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$ cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
El valor por defecto para connect_type es 'tcp'. Sin embargo la extension usará un
socket porque concluye que esto es más eficiente si el proveedor del servidor es
localhost, así que en este caso, podemos usar tcp o socket como connect_type. Para
forzar una conexión tcp real podemos especificar 127.0.0.1 en lugar de localhost en
parámetro host. Ya que el parámetro socket está vacío, la extensión intentará usar
el socket por defecto. Si el socket por defecto, tal y como está definida en php.ini, no
corresponde al socket real asignado al servidor MySQL, tenemos que poner el nombre
del socket (por ejemplo /tm/mysql.sock) en $cfg['Servers'][$i]['socket']
Si el nombre del proveedor del servidor no es localhost, se hará una conexión tcp:
en el puerto especial 3307. Sin embargo, si deja el valor del puerto vacío se usará el
puerto 3306 por defecto:
$cfg['Servers'][$i]['host'] = 'mysql.domain.com';
$cfg['Servers'][$i]['port'] = '3307';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
Configuración de compresión
Si empieza con PHP 4.3.0 y MySQL 3.23.49, el protocolo que se usa para la
comunicación entre PHP y MySQL permite un modo comprimido. El uso de
este modo permite una mayor eficiencia. Para aprovechar mejor este modo,
simplemente especifique:
$cfg['Servers'][$i]['compress'] = 'TRUE';
[ 22 ]
Capítulo 2
El capítulo 3 le ofrece información general de los paneles que vamos a ver ahora.
Configuración multi-servidor
El archivo original config.inc.php tiene tres secciones específicas para los
servidores, lo que permite a una sola copia de phpMyAdmin administrar tres
servidores distintos, pero podemos añadir secciones para administrar más. Veamos
como podemos configurar más servidores.
[ 23 ]
Instalación de phpMyAdmin
Luego, al final de las secciones, la siguiente línea controla lo que sucede durante
el inicio:
$cfg['ServerDefault'] = 1;
Servidor arbitrario
Se puede usar otro mecanismo si queremos poder conectar a un servidor MySQL sin
definir. Primero tenemos que configurar el siguiente parámetro :
$cfg['AllowArbitraryServer'] = TRUE;
[ 24 ]
Capítulo 2
Como pude ver aquí, aún podemos elegir entre uno de los servidores definidos en
Elección de servidor o podemos escribir un nombre arbitrario de servidor, de
usuario y de contraseña:
Instalación multi-usuario
Puede ser que queramos que una copia de phpMyAdmin sea usada por un grupo
de personas, cada una de ellas con su propio nombre de usuario y su contraseña,
y ver sólo las bases de datos a las que tienen acceso. O puede que prefiramos que
nuestro nombre de usuario y nuestra contraseña aparezcan en un texto claro en
config.inc.php.
[ 25 ]
Instalación de phpMyAdmin
El control de usuario
Para poder usar tipos de autenticación de todo tipo de usuario MySQL (en MySQL,
los privilegios del usuario se expresan de varias maneras), debemos definir un
control usuario y contraseña en la sección específica de servidores del servidor. Si
no definimos uno, los usuarios que se han definido en MySQL con una sintaxis de
'user'@'hostname' o 'user'@'%' podrán iniciar la sesión, el resto no.
Hay otra razón para definir el control de usuario: Para poder usar las características
avanzadas de phpMyAdmin.
[ 26 ]
Capítulo 2
Autenticación HTTP
Este modo, http, es el modo tradicional que HTTP ofrece, en el que el navegador
pide un nombre de usuario y una contraseña, los manda a phpMyAdmin y los sigue
mandando hasta que todas las ventanas del navegador están cerradas.
No es una desconexión de verdad, tendremos que cerrar todas las ventanas del
servidor para poder conectarnos otra vez con el mismo nombre de usuario. Incluso
teniendo en cuenta estas limitaciones, este modo puede ser una buena elección por
las siguientes razones:
Autenticación cookie
El otro modo cookie, presenta un panel de inicio de sesión (vea la siguiente figura)
que proviene de phpMyAdmin. Se puede personalizar ya que tenemos el código
fuente de la aplicación. Sin embargo, como ya habrá adivinado, para la autenticación
cookie, el navegador debe aceptar las cookies que provienen del servidor Web.
[ 27 ]
Instalación de phpMyAdmin
Por defecto, phpMyAdmin muestra (en el panel de inicio de sesión) el último nombre
de usuario que se ha conectado con éxito a este servidor particular, tal y como se
ha recuperado de la cookie permanente. Si este comportamiento no es aceptable
(preferimos que cualquier persona que se conecte a la misma estación de trabajo no
vea al usuario anterior), podemos configurar el siguiente parámetro como FALSE:
[ 28 ]
Capítulo 2
$ cfg['LoginCookieRecall'] = FALSE;
Seguridad
La seguridad se puede examinar a varios niveles:
[ 29 ]
Instalación de phpMyAdmin
Otro ataque posible puede venir de otros programadores que tengan una cuenta
en el mismo servidor Web que nosotros. En este tipo de ataque, alguien puede
intentar abrir nuestro fichero config.inc.php. Como este archivo se puede leer
en el servidor Web, cualquiera puede intentar incluir nuestro fichero desde sus
programas PHP. Para protegernos de esto, deberíamos asegurarnos con el proveedor
que el modo seguro PHP está activo.
Control basado en la IP
Se puede añadir un nivel de protección adicional que verifique la dirección del
Protocolo de Internet (IP) de la máquina desde la que se recibe la petición para usar
phpMyAdmin.
Reglas
El formato de una regla es:
<'allow' | 'deny'> <username> [from] <source>
Se permite el acceso al usuario Bob desde cualquier dirección que corresponda con la
red 1.2.3 (es una correspondencia IP CIDR).
deny Alice from 4.5/16
[ 30 ]
Capítulo 2
Equivalente a 127.0.0.1
Deny % from all
All se puede usar como un equivalente a 0.0.0.0/0, lo que quiere decir cualquier
proveedor.
Suponga que queremos permitir acceso por defecto pero denegar acceso sólo a
algunas parejas nombre de usuario/IP. Deberíamos usar:
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
En este caso, todas las reglas deny se aplicarán primero seguidas por las reglas
allow. Si este caso no se menciona en las reglas, se permite el acceso. Si queremos ser
más restrictivos desautorizaremos por defecto. Podemos usar:
$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
Esta vez, todas las reglas allow se aplican primero seguidas por las reglas deny. Si
este caso no se menciona en las reglas, se deniega el acceso.
[ 31 ]
Instalación de phpMyAdmin
La tercera manera (la más restrictiva) de especificar el orden de las reglas es:
$cfg['Servers'][$i]['AllowDeny']['order'] = 'explicit';
Las reglas deny de aplican antes que las reglas allow, pero para que se acepte un
nombre de usuario/dirección IP deben estar en la lista de las reglas allow y no en
las deny.
El nombre de la base de datos puede tener caracteres comodín MySQL como por
ejemplo _ y %.
Para hacerlo, asumiendo que nuestro servidor Web soporte HTTPS, sólo tenemos
que iniciar phpMyAdmin escribiendo https en lugar de http en la URL, como aquí:
https://www.mydomain.com/phpMyAdmin
[ 32 ]
Capítulo 2
Actualizar phpMyAdmin
De versión a versión, aparecen nuevos parámetros en config.inc.php. Si no
queremos modificar sus valores por defecto, podremos utilizar los antiguos archivos
de configuración, de esa mantendremos intactos las opciones por defecto en los
nuevos parámetros. Por supuesto, si una nueva característica tiene un parámetro que
tenemos que cambiar, sería más fácil comenzar con el nuevo fichero.
Se debe tener un cuidado especial al propagar los cambios que hayamos hecho al
archivo layout.inc.php ya que depende de los temas que se hayan usado. Quizá
tengamos que copiar nuestros subdirectorios de temas personalizados si hemos
añadidos nuestros temas a la estructura.
Resumen
Este capítulo explica:
[ 33 ]
Información general de
la interfaz
Paneles y ventanas
La interfaz de phpMyAdmin está compuesta de varios paneles y ventanas. Cada
panel tiene una función específica, no es posible ver todos los paneles a la vez.
Primero le daremos un poco de información general sobre cada panel y luego le
ofreceremos información más detallada en este capítulo.
Página de inicio
El panel de la derecha puede tener el aspecto de una página de inicio, que contiene
varios enlaces a las operaciones de MySQL o información de phpMyAdmin, elección
de Idioma y seguramente elección de temas.
Vistas
En el panel de la derecha podemos elegir la vista base de datos , en la que podemos
hacer algunas acciones serias sobre una base de datos específica, o la vista tabla,
en la que podemos acceder a las numerosas funciones para administrar una tabla.
Un administrador del sistema también puede acceder a la vista de servidor. Todas
estas vistas tienen un menú arriba, que tiene la forma de tabuladores que llevan
a diferentes sub-páginas usadas para presentar la información reagrupada por
funciones comunes (estructura de la tabla, privilegios, etc.).
Ventana consulta
Es una ventana distintiva que se puede abrir desde el panel de la izquierda o del
de la derecha. Su objetivo principal es facilitar el trabajo en las búsquedas y ver los
resultados en el panel de la derecha.
Página de arranque
Cuando iniciemos phpMyAdmin veremos lo siguiente (dependiendo del tipo
de autenticación que se haya especificado en config.inc.php y de si tiene un
servidor definido):
[ 36 ]
Capítulo��3
Ver el nombre del proveedor del servidor Web puede ser muy práctico cuando
tenemos muchas ventanas phpMyAdmin abiertas, o sea, estar conectados a más
de un servidor Web. Por supuesto, cada ventana phpMyAdmin puede dar acceso a
numerosos servidores MySQL.
[ 37 ]
Información general de la interfaz
Selección de idioma
Aparece un selector de Idioma en el panel de inicio de sesión (si lo hay) y en la
página de inicio. El procedimiento por defecto de phpMyAdmin es usar el idioma
que está definido en las preferencias de nuestro navegador, si hay un archivo de
idioma que corresponda para esta versión.
El idioma que se usa por defecto en el caso que el programa no pueda detectar, está
definido en config.inc.php en el parámetro con 'en-iso-8859-1' Este valor se
puede cambiar. Los posibles valores de los nombres de idioma están definidos en el
programa libraries/select_lang.lib.php como un conjunto.
[ 38 ]
Capítulo��3
Siempre que sea posible, la elección del usuario se recordará en una cookie.
[ 39 ]
Información general de la interfaz
Temas
Hay disponible un sistema de temas en phpMyAdmin que empieza con la versión
2.6.0. Los parámetros de color y los diferentes iconos están en una estructura bajo el
subdirectorio temas. Por cada tema disponible hay un subdirectorio con el nombre
del tema. Contiene:
Elección de temas
En la página de inicio podemos ofrecer un selector de temas a nuestro usuarios:
Configurar $cfg['ThemeManager'] a TRUE (por defecto) muestra el selector:
[ 40 ]
Capítulo��3
Para ayudarnos a elegir el tema ideal, el icono paleta de colores que está al lado
de tema / estilo nos enseña muestras de pantallas de los temas disponibles.
Podemos hacer clic y ponerlo bajo el tema que queremos. El tema elegido se
recuerda en una cookie.
Panel de la izquierda
El panel de la izquierda tiene los siguientes elementos:
Se puede ajustar el tamaño del panel de la izquierda haciendo clic y mover la línea
vertical de separación en la dirección preferida, para revelar más datos en el caso
que los nombres de las bases de datos o de las tablas sean demasiado largos para el
tamaño por defecto del panel de la izquierda.
[ 41 ]
Información general de la interfaz
[ 42 ]
Capítulo��3
Esto significa que nuestros derechos MySQL no nos permiten ver las bases de
datos existentes.
[ 43 ]
Información general de la interfaz
[ 44 ]
Capítulo��3
Modo completo
Los anteriores ejemplos se han mostrado en el modo instalación mínima, pero
si configuramos el parámetro $cfg['LeftFrameLight'] FALSE, obtendremos
un diseño completo de nuestras bases de datos y tablas, haciendo uso de menús
expandibles (si nuestro navegador los soporta):
[ 45 ]
Información general de la interfaz
El número de tablas por base de datos se muestra entre paréntesis. El modo completo
no se selecciona por defecto; puede incrementar el tráfico de la red y la carga del
servidor si nuestros derechos actuales nos dan acceso a más bases de datos y tablas.
Los enlaces se tienen que generar en el panel de la izquierda para habilitar el acceso
a la tabla y acceso rápido a todas las tablas y además el servidor tiene que contar el
número de columnas de todas las tablas.
[ 46 ]
Capítulo��3
Digamos que tenemos acceso a la base de datos db1 y a dos proyectos, marketing
y administración. Si usamos un separador especial (por defecto subrayado doble)
entre el nombre del proyecto y el nombre de la tabla, podemos conseguir un efecto
visual interesante:
[ 47 ]
Información general de la interfaz
[ 48 ]
Capítulo��3
Panel de la derecha
El panel de la derecha es la zona principal de trabajo, las posibles vistas se explican
en las secciones que siguen. Su aspecto se puede personalizar. El color de fondo
está definido en $cfg['RightBgColor'] con un valor por defecto de #F5F5F5.
También podemos poner una imagen de fondo si configuramos el URI de la imagen
que queremos (por ejemplo http://www.mydomain.com/images/clouds.jpg) en
$cfg['RightBgImage'] .
Página de inicio
La página de inicio puede tener un número variable de enlaces que dependen del
modo de inicio de sesión y los derechos de usuario. Un usuario normal puede que la
vea así:
El enlace Inicio del panel de la izquierda se usa para mostrar esta página. Muestra
la versión de phpMyAdmin y MySQL, el nombre del servidor MySQL y el usuario
que está conectado. También vemos que este usuario no tiene el privilegio de crear
una base de datos. Vemos algunos enlaces que están relacionados con MySQL y
phpMyAdmin. El enlace Salir puede que no aparezca si nos hemos conectado de
forma automática, como se indicaba en el fichero de configuración.
[ 49 ]
Información general de la interfaz
Es aquí donde podemos obtener una vista general de la base de datos: Las tablas
existentes, el enlace para crear una tabla, los tabuladores de la vista base de datos
para las sub-páginas y algunas operaciones especiales que podemos hacer en las
bases de datos para generar documentos y estadísticas. Hay una casilla de control
bajo cada tabla para hacer operaciones globales en esas tablas (está cubierto en el
capítulo 10). La tabla se escoge con la casilla de control o haciendo clic en cualquier
parte del fondo de pantalla. También podemos ver el tamaño de todas las tablas si
$ cfg['ShowStats'] está configurado TRUE. Este parámetro también controla el
aspecto de las estadísticas específicas de una tabla en la vista tabla.
[ 50 ]
Capítulo��3
[ 51 ]
Información general de la interfaz
Vista tabla
Es una vista que se usa habitualmente y que da acceso a todas las sub-páginas
específicas de las tablas. Normalmente, la pantalla inicial es la pantalla Estructura
de tabla, que muestra (tenga en cuenta la parte superior) todos los campos e índices.
Tenga en cuenta que la cabecera de esta pantalla siempre muestra el nombre de la
base de datos y la tabla que se están usando en ese momento. También podemos ver
los comentarios escritos de la tabla:
[ 52 ]
Capítulo��3
Vista servidor
Esta vista se muestra cada vez que elegimos una opción relacionada con MySQL
desde la página inicial: Por ejemplo, base de datos o ver información del tiempo de
ejecución de MySQL. Por supuesto, un usuario con privilegios verá más opciones
en la vista servidor. El panel vista servidor se creó para agrupar la administración de
todas sub-páginas del servidor y permitir una fácil navegación entre ellos.
• En la página inicial.
• En la parte superior de la página, cuando se hacer la lista servidor, base de
datos y tabla.
• En los tabuladores del menú en las vistas base de datos, tabla y servidor.
[ 53 ]
Información general de la interfaz
Este parámetro está configurado TRUE por defecto, produciendo, por ejemplo:
Ventana consulta
A menudo es conveniente tener una ventana distintiva en la que podamos escribir y
refinar consultas, y que esté sincronizada con el panel de la derecha. Esta ventana
se llama ventana consulta. Podemos abrir esta ventana si usamos el pequeño icono
SQL o el enlace ventana consulta de los iconos del panel de la izquierda o de la zona
de enlaces.
[ 54 ]
Capítulo��3
Podemos elegir las dimensiones de esta ventana (en píxeles) con $cfg['QueryWin
dowWidth'] y $cfg['QueryWindowHeight'] . El capítulo 12 explica la ventana
consulta con más detalle, incluyendo las características SQL de historial de
consultas, disponibles.
[ 55 ]
Información general de la interfaz
Resumen
En este capítulo hemos cubierto:
[ 56 ]
Primeros Pasos
Creación de bases de datos
Como ya hemos visto el diseño general del panel de phpMyAdmin, estamos
preparados para: Crear una base de datos, nuestra primera tabla, insertar algunos
datos y examinarla. Antes de crear una tabla, debemos asegurarnos que tenemos
una base de datos para la que el administrador del servidor MySQL nos ha dado
permisos CREATE. Existen varias posibilidades:
¿Sin permisos?
En este caso, la página de inicio tiene el siguiente aspecto:
Primeros Pasos
Esto quiere decir que tenemos que trabajar con las bases de datos que nos han
creado, o pedirle al administrador del servidor MySQL que nos de los permisos
CREATE necesarios.
Asumiremos que tenemos permiso para crear una base de datos llamada dbbook.
Escribimos dbbook en el campo de entrada y hacemos clic en Crear. Una vez que se
ha creado la base de datos, veremos la siguiente pantalla:
[ 58 ]
Capítulo��4
• Por defecto, la consulta SQL que phpMyAdmin ha enviado para crear la base
de datos, se muestra en color.
[ 59 ]
Primeros Pasos
de datos nueva, renombrando cada tabla; así pues mandándolas a la nueva base de
datos; y al final elimina la base de datos original.
Creación de la tabla
Hemos elegido el nombre de nuestra tabla y sabemos cuantos campos tiene.
Escribimos esta información en el diálogo Crear tabla nueva y hacemos clic en
Continuar para empezar a crear la tabla:
[ 60 ]
Capítulo��4
Luego vemos el panel para especificar la información de los campos. Como hemos
pedido cuatro campos, veremos cuatro filas, cada fila se refiere a la información
específica de un campo:
Los documentos MySQL explican cuáles son los caracteres válidos para los nombres
de tabla y campo (si buscamos Nombres legales). Esto puede variar dependiendo de
la versión MySQL. Normalmente, cualquier carácter que se permite en un nombre de
archivo (exceptuando el punto y la coma) es válido para un nombre de tabla, el tamaño
del nombre no debe exceder los 64 caracteres. Este límite de 64 caracteres también
existe para los nombres de campos; sin embargo podemos usar cualquier carácter.
[ 61 ]
Primeros Pasos
Hay otros campos atributos, pero los dejaremos vacíos en este breve ejemplo. Debe
mirar los campos: hay 4 diálogos en la parte superior de la pantalla. Esto no es tan
sólo para recordarnos cuantos campos hemos pedido hacer. De hecho, podemos
usarlo para cambiar el número de campos que queremos (normalmente para
aumentarlo) y hacer clic en continuar. El número de filas cambiará de acuerdo con
el número de campos, manteniendo intacta la información que ya se ha escrito sobre
los cuatro primeros campos. Antes de guardar la página, definamos las claves.
En este punto podríamos cambiar el tipo de tabla haciendo uso del menú desplegable
Tipo, pero por ahora aceptaremos el tipo por defecto.
Ahora ya estamos preparados para crear la tabla haciendo clic en Guardar. Si todo
va bien, la siguiente pantalla confirma que la tabla se ha creado; ahora estamos en la
sub-página Estructura de la vista tabla.
[ 62 ]
Capítulo��4
[ 63 ]
Primeros Pasos
Por ahora, haga clic en el enlace Insertar, que nos llevará al panel de escritura de
datos (o su edición) que se muestra en la pantalla que sigue.
Esta pantalla tiene espacio para escribir información en dos columnas: Dos libros.
Esto pasa porque el valor por defecto de $cfg['InsertRows'] es 2. Por defecto, el
recuadro Ignorar está marcado, lo que quiere decir que el segundo grupo de campos
se ignorará. Pero tan pronto como escribimos información en un campo de este
grupo y salimos del campo, el recuadro Ignorar deja de estar marcado.
[ 64 ]
Capítulo��4
[ 65 ]
Primeros Pasos
Modo examinar
Hay muchas maneras de entrar en este modo. De hecho se usa cada vez que se
presentan los resultados de las consultas . Podemos entrar a este modo manualmente
usando el icono de guardar rápido del panel de la izquierda o yendo a la vista tabla
específica y haciendo clic en Examinar:
[ 66 ]
Capítulo��4
Se puede hacer clic en el enlace Crear código PHP para reformatear la sintaxis en la
sintaxis que se espera de un programa PHP. Se puede copiar y pegar directamente
el lugar donde necesitamos la consulta, en el programa PHP con el que estamos
trabajando. Debe darse cuenta que después de hacer clic a este enlace cambiará a
Sin código PHP, lo que le devolverá a la presentación normal de una consulta. Este
enlace está disponible si cfg['SQLQuery']['ShowAsPHP'] está configurado TRUE.
[ 67 ]
Primeros Pasos
Actualizar se usa para ejecutar la misma consulta otra vez. Los resultados pueden
cambiar, ya que el servidor MySQL es un servidor multi-usuario, y otros usuarios
pueden modificar la(s) misma(s) tabla(s). Este enlace aparece si cfg['SQLQuery']['
Refresh'] está configurado TRUE.
Barra de navegación
Esta barra se muestra en la parte superior e inferior de los resultados. Las cabeceras
de las columnas se pueden repetir entre los resultados a ciertos intervalos,
dependiendo del valor escrito en encabezado cada... celdas.
Debe darse cuenta que estamos en el registro número 0 y estamos viendo los
registros en modo horizontal.
Veamos otro ejemplo, ahora con una tabla recién creada: La tabla user. Esta tabla
contiene cuatro campos: help_category_id, name, parent_category_id y url. En esta
tabla hay muchas filas (aquí 32109), la barra de navegación se adapta sola:
[ 68 ]
Capítulo��4
Ahora aparecen botones marcados <<,<,> y >> para acceder de forma fácil a la
primera página, la página anterior, la página siguiente y la última página de los
resultados. Los símbolos se muestran de esta manera porque la configuración por
defecto de $cfg['NavigationBarIconic'] es TRUE. Un FALSE aquí produciría unas
etiquetas diferentes:
Por diseño, phpMyAdmin siempre intenta dar resultados con rapidez, uno puede
llegar a este resultado si añade una cláusula LIMIT en SELECT. Si ya hay una cláusula
LIMIT en la consulta origina, phpMyAdmin la respetará. El límite por defecto es
30 filas, que está configurado en $cfg['MaxRows']. Con múltiples usuarios en el
servidor, esto le ayuda a mantener la carga al mínimo.
[ 69 ]
Primeros Pasos
Si hace clic en el botón Mostrar todos , se extraen todas las filas de los resultados,
que puede llegar al tiempo límite de ejecución de PHP, al límite de la memoria del
servidor o del navegador
Organizar resultados
En SQL, nunca podemos estar seguros en que orden se extraen los resultados a no
ser que organicemos los datos explícitamente. Alguna implementación en la máquina
de extracción puede mostrar resultados en el mismo orden con el que los datos se
escribieron, con la clave primaria; pero una manera segura de obtener resultados en
orden es organizarlos explícitamente.
Una manera obvia de organizarlos es con claves. El dialogo Organizar muestra las
claves que ya están definidas. Aquí vemos una clave llamada PRIMARIA, el nombre
que hemos dado a nuestra clave primaria cuando hemos marcado Primaria para este
campo cuando lo creamos.
Esta puede que sea la única manera de organizar entre múltiples campos a la vez
(para índices multi-campo).
[ 70 ]
Capítulo��4
Ahora vemos un pequeño triángulo rojo hacia abajo en la cabecera autor_id. Esto
quiere decir que el orden de organización es 'descendiente'. Si movemos el cursor
del ratón sobre la cabecera autor_id hace que el triángulo cambie de dirección, para
indicar que pasará si hacemos clic en la cabecera: Una organización ascendiente
de autor_id.
De hecho, todas las cabeceras de las columnas se pueden marcar para ordenar esta
columna, aunque no formen parte de un índice. Podemos confirmarlo si miramos la
consulta SQL que está en la parte superior de la pantalla, debería tener una cláusula
ORDER BY.
La organización inicial por defecto está definida en $cfg['Order'] con ASC para
ascendente, DESC para descendente y SMART que se refiere a campos tipo DATE, TIME,
DATETIME y TIMESTAMP que se organizan en orden descendiente y otros tipos de
campos en orden ascendiente.
Puede ser interesante marcar visualmente algunas filas para destacar su importancia
para hacer una comparación personal de datos o cuando se están mostrando datos
a otras personas. Se destaca al Hacer clic en la fila. Hacer clic quita la marca de la
fila. El color elegido se define con $cfg['BrowseMarkerColor'] (vaya a themes/
themename/layout.inc.php). Esta característica debe estar activada configurando
[ 71 ]
Primeros Pasos
Esto nos ayuda a ver más columnas al mismo tiempo (con el coste de ver menos de
cada columna).
Para ver los textos completos, podemos hacer clic en la T que está al lado de la
cabecera de la columna, sirve para conmutar el modo texto completo y el modo
texto parcial:
[ 72 ]
Capítulo��4
Para crear esta tabla debemos volver a la vista base de datos. En el panel de
la izquierda, haremos clic en dbbook, y pediremos que nos cree otra tabla con
tres campos:
[ 73 ]
Primeros Pasos
Si usamos las mismas técnicas que hemos usado para crear la primera tabla,
obtendremos:
Aquí usamos el mismo nombre de campo (autor_id, que es nuestra clave primaria en
esta tabla nueva), para que nuestro diseño sea más consistente. Después de guardar
la estructura de la tabla, escribimos algunos datos para los autores 1 y 2. ¡Use su
imaginación para hacerlo!
Resumen
En este capítulo, hemos:
[ 74 ]
Cambiar datos
Los datos no son estáticos, a menudo cambian . Este capítulo se centra en la edición y
supresión de datos y sus estructuras de soporte: Tablas y bases de datos.
Modo editar
Cuando examinamos una tabla o vemos los resultados de una búsqueda en una tabla
sencilla de consultas, aparece un pequeño icono a la izquierda o a la derecha de cada
fila de tablas:
La fila se puede editar con el icono en forma de lápiz y borrar con el icono en forma
de X. La forma y posición exactas de estos controles están gobernadas por:
$cfg['PropertiesIconic'] = TRUE;
$cfg['ModifyDeleteAtLeft'] = TRUE;
$cfg['ModifyDeleteAtRight'] = FALSE;
El pequeño recuadro que está al lado de todas las filas está explicado en las secciones
Editar múltiples filas y Suprimir varias filas que aparecen más tarde en este capítulo.
Si hace clic en el icono o enlace Editar le muestra el siguiente panel que es parecido al
panel de entrada de datos (a excepción de la parte inferior):
Cambiar datos
En este panel podemos cambiar datos tecleando directamente (o cortar y pegar con
los mecanismos operativos normales del sistema). También podemos volver a los
contenidos originales si usamos el botón Restablecer.
Por defecto, los botones de radio inferiores están configurados para Guardar (lo que
quiere decir que podemos cambiar esa fila) y Volver a la página anterior (de modo
que podemos seguir editando otra fila en la página anterior de resultados). Puede
que queramos quedarnos en la página abierta después de hacer clic en Continuar
(queremos guardar y continuar editando) de ese modo elegimos Volver a esta
página. Si queremos insertar otra fila nueva después de guardar la fila actual, sólo
tenemos que elegir Insertar otra fila nueva antes de guardar. La elección Insertar
como una fila nueva se explica en la sección Duplicar filas de datos, en este capítulo.
[ 76 ]
Capítulo��5
Aquí hay definiciones que restringen los nombres de las funciones que se presentan
en el tipo VARCHAR:
$cfg['RestrictColumnTypes'] = array(
'VARCHAR' => 'FUNC_CHAR', [...]
$cfg['RestrictFunctions'] = array(
'FUNC_CHAR' => array(
'ASCII',
'CHAR',
'SONDEX',
'LCASE',
'UCASE',
'PASWORD',
'MD5',
'ENCRYPT',
'LAST_INSERT_ID',
'USER',
'CONCAT'
), [...]
[ 77 ]
Cambiar datos
Aquí necesitamos un ejemplo. Nuestro autor ha escrito el volumen 2 del libro sobre
el cine y los únicos campos que tienen que cambiarse son el número ISBN y el título.
Ponemos la fila existente en la pantalla, cambiamos estos dos campos y elegimos
Insertar como una fila nueva, como vemos en la pantalla:
Cuando hacemos clic en Continuar, se crea otra fila con la información cambiada y
deja la fila original sin cambiar:
[ 78 ]
Capítulo��5
Esto hace que aparezca el panel Editar que contiene todas las filas elegidas, el
proceso de edición continuará mientras se vean, comparen o cambien los datos de
estas filas.
[ 79 ]
Cambiar datos
Suprimir datos
La interfaz de phpMyAdmin nos permite suprimir lo siguiente:
[ 80 ]
Capítulo��5
[ 81 ]
Cambiar datos
Tendremos un mensaje que confirmará TRUNCATE (la sentencia MySQL que se usa
para vaciar una tabla de forma rápida). Vaciar una tabla también se puede hacer en
la vista tabla, con el enlace Vaciar que está en el menú superior:
Suprimir tablas
Suprimir una tabla borra los datos y la estructura de la tabla. Podemos suprimir
tablas si usamos el enlace Eliminar de la vista tabla.
En la vista base de datos, podemos suprimir una tabla específica si usamos el icono
en forma de X de esa tabla. También existe el mismo mecanismo para borrar más de
una tabla (con el menú deplegable y la acción Eliminar).
[ 82 ]
Capítulo��5
Para que nos los pensemos dos veces, aparece un mensaje especial antes que se
suprima la base de datos: ¡Está a punto de DESTRUIR una base de datos!
Resumen
En este capítulo hemos examinado los siguientes conceptos:
[ 83 ]
Cambiar la estructura de
la tabla
Este capítulo explora la edición de la definición de la tabla y el uso de tipos de
columnas especiales. Cuando se desarrolla una aplicación, los requisitos cambian a
menudo a causa del cambio de necesidades. Los programadores deben arreglar estos
cambios a través de una edición de la estructura de la tabla sensata.
Añadir un campo
Imagine que necesitamos un campo nuevo para almacenar el idioma del libro, y por
defecto, los libros cuyos datos tenemos guardados están escritos en inglés. Decidimos
que el campo se llamará idioma, será un código de dos caracteres (en por defecto).
Las posiciones de los nuevos campos de la tabla, sólo importan desde el punto de
vista del programador; normalmente nosotros agrupamos los campos de forma
lógica para encontrarlos con más facilidad en la lista de campos. La posición
exacta de los campos no afecta a los resultados (salida de datos de las consultas),
porque los resultados se pueden ajustar sin tener en cuenta la estructura de la tabla.
Normalmente, los campos más importantes (incluyendo las claves) están al principio
de tabla, pero es cuestión de preferencia personal. Elegimos poner el nuevo campo
Al final de la tabla, así que marcamos el botón de radio y hacer clic en Continuar:
Cambiar la estructura de la tabla
Otras elecciones posibles podrían ser Al principio de la tabla o Después de... (con el
que podríamos elegir donde deber ir el nuevo campo en el menú desplegable).
Vemos que aparece el panel familiar para los nuevos campos, en el se ve repetido el
número de campos que hemos pedido. Lo rellenamos y esta vez ponemos un valor
por defecto, en. Luego hacemos clic en Guardar.
Este panel aparece en modo horizontal ya que es la configuración por defecto de $cf
g['DefaultPropDisplay'] .
Modo vertical
Si configuramos $['DefaultPropDisplay'] en 'vertical', el panel (junto con
el panel para editar la estructura de la tabla) que añade campos nuevos tendrá
una presentación vertical. Las ventajas de trabajar en modo vertical son obvias,
especialmente cuando hay más de una elección por campo, tal y como se explica en
el capítulo 16, Transformaciones basadas en MIME.
[ 86 ]
Capítulo��6
Hay enlaces rápidos que pueden ser útiles en situaciones específicas. Tenga en
cuenta que reemplazan el índice completo del panel de administración o el índice
completo del panel estructura. Ambos se explican en este capítulo.
También podemos usar los recuadros para elegir campos y con los iconos Para los
elementos que están marcados, editar los campos o suprimir múltiples campos con
Eliminar. La opción Marcar todos/Desmarcar todos permite marcar o desmarcar
con facilidad todos los recuadros.
Campos TEXT
Ahora vamos a explicar como se usa el tipo de campo TEXT y los valores de
configuración relevantes que hay que ajustar para que phpMyAdmin funcione mejor.
[ 87 ]
Cambiar la estructura de la tabla
Hay tres parámetros que controlan el formato de la zona del texto que se presenta en
el modo Insertar o Editar para los campos TEXT. Primero, el número de columnas y
filas de cada campo está definido por :
$cfg['TextareaCols'] = 40;
$cfg['TextareaRows'] = 7;
La configuración sólo impone un límite visual a la zona de texto, se crea una barra de
desplazamiento vertical si es necesario.
[ 88 ]
Capítulo��6
Escojamos un archivo imagen con el botón Buscar; por ejemplo, el archivo logo_
left.png que está en el directorio phpMyAdmin/themes/original/img; y hacemos
clic en Continuar:
[ 89 ]
Cambiar la estructura de la tabla
Tenemos que tener en cuenta que hay límites de tamaño en la carga. Primero, el
tamaño del campo BLOB está limitado a 64k, así pues phpMyAdmin nos recuerda
este límite con el Max: Alarma 65.536 bytes. También, puede haber límites inherentes
en PHP; ver el capítulo 8, Importar la estructura y datos; que se tienen que tener en
cuenta en este valor tamaño máximo. Ahora hemos cargado una imagen en este
campo, en una fila específica.
El valor por defecto 'blob' nos permite proteger los campos BLOB de ser editados, lo
que nos permite editar otros campos marcados binary por MySQL. Un valor 'all'
protegería todos los campos binarios de ser editados. Un valor FALSE, no protegería
nada lo que nos permitiría editar todos los campos. Si intentamos la última elección,
veremos el siguiente panel de edición para esta fila.
¡Lo más seguro es que no sea nuestro editor de imagen favorito! De hecho, los datos
pueden corromperse incluso si guardamos este archivo sin tocar el campo BLOB. Pero
la configuración para borrar ProtectBinary existe porque algunos usuarios ponen
texto en sus BLOB y se les tiene que dar permiso para modificarlos.
Los tipos de dato BLOB de MySQL en realidad son parecidos a sus tipos
de dato TEXT, con la única diferencia de ser tratados como sensibles a
la hora de la clasificación y la comparación. Por eso phpMyAdmin se
puede configurar para permitir la edición de los campos BLOB.
[ 90 ]
Capítulo��6
ENUM y SET
Ambos tipos de campos tienen por objetivo representar una lista de valores
probables; la diferencia es que el usuario puede elegir tan sólo un valor de una
lista definida de valores con ENUM y más de un valor con SET. Con SET, los valores
múltiples van en una celda; tener valores múltiples no implica la creación de más de
una fila de datos.
Añadimos un campo llamado género y lo definimos como ENUM. Por ahora, elegimos
poner códigos cortos en la lista de valores y uno de ellos (F) es el valor por defecto:
En la lista de valores, tenemos que blindar cada valor con comillas, al contrario que el
campo valor por defecto. En nuestro diseño, sabemos que esos valores quieren decir
Fantasía, Niños y Novela, pero por ahora queremos ver como se comporta la interfaz
con códigos cortos. Ahora en el panel insertar vemos una interfaz buzón radio.
[ 91 ]
Cambiar la estructura de la tabla
Observe que los botones radio previos han cambiado a una lista de selección porque
los posibles valores son más largos.
Si queremos elegir más de un valor posible, tenemos que cambiar el tipo de campo
a SET. Se puede usar la misma lista de valores, pero ahora, usaremos el selector de
valores múltiples de nuestro navegador (normalmente hacer clic en control) para
seleccionar más de un valor:
Este icono hace que aparezca una ventana emergente que está sincronizada con
el campo DATE. Si ya hay un valor en este campo, la ventana emergente muestra
lo mismo. En nuestro caso el valor por defecto 00-00-0000 era el que se veía en el
campo, de modo que el calendario muestra la fecha actual:
[ 92 ]
Capítulo��6
Los pequeños símbolos al lado de cada cabecera año y mes, nos permite navegar con
facilidad por los meses y los años, con un sencillo clic podemos transportar la fecha
que queremos a nuestro campo fecha_publicación.
Administración de índices
phpMyAdmin tiene un gran número de opciones para administrar índices, opciones
que cubriremos en esta sección.
[ 93 ]
Cambiar la estructura de la tabla
Esta sección tiene enlaces para editar o suprimir cada índice. Aquí, la parte campo
sólo pone un campo en la lista por índice, además vemos que todo el campo participa
en el índice.
[ 94 ]
Capítulo��6
Hacemos clic en el enlace Editar (pequeño lápiz) en la línea que contiene el índice
autor_id y elegimos añadir una columna a este índice como se ve en la siguiente
muestra de pantalla:
Elegimos el campo idioma en el siguiente panel. Esta vez no tenemos que poner un
tamaño ya que usará todo el campo en el índice:
[ 95 ]
Cambiar la estructura de la tabla
Índices FULLTEXT
Este tipo especial de índice permite búsquedas de textos completos. Está soportado
en las tablas tipo MyISAM para los campos VARCHAR y TEXT. Podemos usar el
enlace rápido Texto completo que está en la lista de los campos o ir al panel de
administración de índices y elegir Texto completo en el menú desplegable:
[ 96 ]
Capítulo��6
Puede que veamos un 1 como longitud del campo para el índice recién creado,
dependiendo de la versión de MySQL. De hecho, MySQL no soporta la longitud de
un índice FULLTEXT: El índice siempre aparece en todo el campo, pero este 1 será el
valor que informa MySQL.
Queremos saber que libros escritos por el autor 2 están en el idioma es, nuestro
código para español.
Para escribir esta consulta, usamos el enlace SQL desde el menú base de datos, el
menú tabla o la ventana de consulta SQL. Escribimos esta consulta en el recuadro
consulta y hacemos clic en Continuar. Ahora no es importante si la consulta
encuentra resultados.
[ 97 ]
Cambiar la estructura de la tabla
Veamos los enlaces: [Editar] [Explicar SQL] [Crear código PHP] [Actualizar]
Ahora usaremos el enlace [Explicar SQL] para obtener información sobre que índice
(si se ha usado alguno) se ha usado para esta consulta:
Podemos ver que el comando EXPLAIN se ha pasado a MySQL, lo que nos dice que la
clave_posible usada es autor_idioma. Así pues sabemos que este índice se usará
para este tipo de consulta. Si este índice no hubiese existido, el resultado hubiese
sido bastante diferente:
Sin embargo, la diferencia tiempo puede ser mínima si sólo tenemos datos de test
limitados comparados a la producción de una tabla real.
[ 98 ]
Capítulo��6
Resumen
En este capítulo hemos cubierto:
[ 99 ]
Exportar la estructura y
los datos
Tener una buena copia de seguridad es crucial para un proyecto: Está constituida
por copias de seguridad actualizadas y copias instantáneas hechas durante las
fases de desarrollo y producción. La característica de exportación de phpMyAdmin
puede generar una copia de seguridad y se puede usar para mandar datos a
otras aplicaciones.
MySQL incluye una utilidad línea de comando mysqldump que se puede usar
para generar archivos de exportación. Pero no todos los proveedores de servidores
ofrecen el acceso al entorno operativo necesario para usar las utilidades de la línea de
comando. También, acceder a la característica de exportación que está en la interfaz
Web es más conveniente. Por eso phpMyAdmin (desde la versión 1.2.0) ofrece la
característica de Exportación con más formatos de exportación que mysqldump. En
este capítulo nos centraremos en la característica de exportación de phpMyAdmin.
También existe un modo de exportación de todo el servidor. Este modo solo está
disponible para los usuarios MySQL con permisos y se discute en el capítulo 18.
Exportar la estructura y los datos
Antes de empezar una exportación, debemos tener una imagen clara del objetivo de
la exportación, las siguientes preguntas pueden ayudarle:
[ 102 ]
Capítulo��7
Sub-panel Exportar
Este sub-panel contiene un selector de tablas en el que podemos elegir la(s) tabla(s)
y el formato que queremos. El formato SQL es útil para nuestras necesidades ya
que crea comandos SQL estándar que funcionan en cualquier servidor SQL. Otros
posibles formatos incluyen LaTeX, Comma-Separate Values (CSV) y XML. Otro
formato, Native MS Excel, está disponible después de instalar más programas y
configurarlos (ver la sección Native MS Excel de este capítulo).
Ahora discutiremos los formatos (y las opciones disponibles una vez que los hemos
elegido) que se pueden elegir en el sub-panel Exportar.
Formato SQL
Empezaremos haciendo clic en Seleccionar todos; queremos todas las tablas.
Sabemos que las tablas son pequeñas así que la pantalla de exportación que
aparecerá no será muy grande. Luego haremos clic en Continuar que produce los
siguientes datos de salida:
-- phpMyAdmin SQL Dump
-- version 2.8.0.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Tiempo de generación: Jul 05, 2006 a 01:10 PM
-- Versión del servidor: 4.0.18
-- Versión de PHP: 5.0.5-dev
--
-- Base de datos: 'dbbook'
--
[ 103 ]
Exportar la estructura y los datos
-- --------------------------------------------------------
--
-- Estructura de la tabla para la tabla 'autor'
--
--
-- Copia en la memoria de los datos de la tabla 'autor'
--
-- --------------------------------------------------------
--
-- Estructura de la tabla para la tabla 'libros'
--
[ 104 ]
Capítulo��7
En este ejemplo de exportación, los datos del segundo libro (empezando con 0x8950)
se han truncado para ser breves. De hecho, contendría la representación completa
hexadecimal del campo foto_cubierta de este libro.
Opciones SQL
Las opciones de SQL se usan para definir exactamente que datos contendrá la
exportación. Puede que queramos ver la estructura, los datos o ambos. Seleccionar
Estructura genera una sección con consultas CREATE y seleccionar Datos produce
consultas INSERT:
[ 105 ]
Exportar la estructura y los datos
[ 106 ]
Capítulo��7
--
-- COMENTARIOS PARA LA TABLA 'libros':
-- 'isbn'
-- 'número de libro'
-- 'número_pag'
-- 'aproximado'
-- 'autor_id'
-- 'ver tabla autores'
--
--
-- TIPOS MIME PARA LA TABLA 'libros':
-- 'fot0_cubierta'
-- 'image_jpeg'
-- 'fecha_publicación'
-- 'text_plain'
-- 'descripción'
-- 'text_plain'
--
-- RELACIONES PARA LA TABLA 'libros':
-- 'autor_id'
-- `autor` -> `autor_id`
--
[ 107 ]
Exportar la estructura y los datos
Tenga en cuenta que todos los nombres de columna están presentes en cada
sentencia. El fichero final es más grande pero será más portátil en diferentes
sistemas SQL, con el beneficio añadido de estar mejor documentado.
• Inserciones extendidas: Guarda todos los datos en una sola sentencia INSERT:
INSERT INTO 'autor' VALUES (1, 'John Smith', '+01 445 789-1234');
(2, 'Maria Sunshine', '+01 455 444-5683);
Este método de insertar datos es más rápido que usar INSERT múltiples,
pero es inconveniente porque hace que leer el fichero final más difícil. Inser-
ciones extendidas también produce un fichero más pequeño, pero debe tener
en cuenta por adelantado de no se puede ejecutar cada línea de este fichero
porque no todas las líneas tienen una sentencia INSERT. Si no puede impor-
tar el fichero completo en una operación, no puede partir el fichero con un
editor de texto e importarlo codificado.
• Usar inserciones suprimidas: Añade un modificador DELAYED a las sentencias
INSERT. Esto acelera la operación INSERT porque se pone en cola en el
servidor, que se ejecutará cuando la tabla no esté en uso. Por favor tenga en
cuenta que es una extensión MySQL no estándar sólo está disponible para las
tablas MyISAM e ISAM.
• Usar ignorar inserciones: Normalmente, durante la importación, no podemos
insertar valores duplicados para las claves; esto abortaría la operación
insertar. Esta opción añade el modificador IGNORE a las sentencias INSERT
y UPDATE, de forma que se salta las filas que generan errores de duplicación
de claves.
• Usar campos binarios hexadecimales: Un campo con el atributo BINARY
puede tener (o no) contenidos binarios. Esta opción hace que phpMyAdmin
codifique los contenidos de estos campos en formato 0x. Desmarque esta
opción si los campos están marcados BINARY pero están en texto normal,
como la tabla mysql.user.
• Tipo de exportación: Las elecciones son INSERTAR, ACTUALIZAR y
SUSTITUIR. El más conocido de estos tipos es el que aparece por defecto
INSERTAR; si usa sentencias INSERT para importar los datos. Sin embargo,
durante la importación, estaremos en una situación en la que la tabla ya
existe, tiene datos de valor y sólo queremos actualizar los campos que están
[ 108 ]
Capítulo��7
[ 109 ]
Exportar la estructura y los datos
Compresión
Para ahorrar tiempo de transmisión y obtener un fichero de exportación más
pequeño. phpMyAdmin puede comprimir en los formatos zip, gzip o bzip2.
phpMyAdmin tiene soporte nativo para el formato zip pero los formatos gzip
y bzip sólo funcionarán si el servidor PHP se ha compilado con la opción de
configuración --with-zlib o --with-bz2, respectivamente. Los siguientes
parámetros controlan que elecciones de compresión se presentan en el panel:
$cfg['ZipDump'] = TRUE;
$cfg['GZipDump'] = TRUE;
$cfg['BZipDump'] = FALSE;
[ 110 ]
Capítulo��7
El resultado es:
"autor_id", "nombre_autor", "teléfono"
"1", "John Smith", "+01 445 789-1234"
"2", "Maria Sunshine", "+01 455 444-5683"
[ 111 ]
Exportar la estructura y los datos
LaTeX
LaTeX es una lengua de composición de textos. phpMyAdmin puede generar un
archivo .text que representa la estructura de los datos y/o los datos en un formato
tabular lateral. Tenga en cuenta que este archivo no se puede ver directamente, debe
procesarse y convertirse para verlo en el medio final.
• Incluir la leyenda de las tablas: Presenta las leyendas en los datos de salida
tabulares.
• Estructura y Datos : La elección familiar para pedir estructura, datos
o ambos.
• Leyenda de la tabla : La leyenda que aparece en la primera página.
• Leyenda de la tabla (continuación): La leyenda que aparece después de la
página número uno.
[ 112 ]
Capítulo��7
El archivo LaTeX generado para los datos de la tabla autor tiene este aspecto:
% phpMyAdmin LaTeX Dump
% versión 2.8.0.4
% http://www.phpmyadmin.net
%
% Host: localhost
% Tiempo de generación: Jul 05, 2006 a 01:10 PM
% Versión del servidor: 4.0.18
% Versión de PHP: 5.0.5-dev
%
% Base de datos: 'dbbook'
%
%
% Estructura: autor
%
\begin{longtable}{|l|c|c|c|}
\caption{Structure of table authors} \label{tab:authors-structure} \\
\hline\multicolumn{1}{|c|}{\textbf{Field}} & \multicolumn{1}{|c|}{\
textbf{Type}} & \multicolumn{1}{|c|}{\textbf{Null}} & \
multicolumn{1}{|c|}{\textbf{Default}} \\ \hline \hline
\endfirsthead
\caption{Structure of table authors (continued)} \\
\hline\multicolumn{1}{|c|}{\textbf{Field}} & \multicolumn{1}{|c|}{\
textbf{Type}} & \multicolumn{1}{|c|}{\textbf{Null}} & \
multicolumn{1}{|c|}{\textbf{Default}} \\ \hline \hline\endhead \
endfoot \textbf{\textit{author\_id}} & int(11) & No & 0 \\ \hline
author\_name & varchar(30) & No & \\ \hline
phone & varchar(30) & Yes & NULL \\ \hline
\end{longtable}
%
% Data: autor
%
\begin{longtable}{|l|l|l|}
\hline \endhead \hline \endfoot \hline
\caption{Content of table authors} \label{tab:authors-data} \\\hline
\multicolumn{1}{|c|}{\textbf{author\_id}} & \multicolumn{1}{|c|}{\
textbf{author\_name}} & \multicolumn{1}{|c|}{\textbf{phone}} \\ \hline
\hline \endfirsthead
\caption{Content of table authors (continued)} \\ \hline \
multicolumn{1}{|c|}{\textbf{author\_id}} & \multicolumn{1}{|c|}{\
textbf{author\_name}} & \multicolumn{1}{|c|}{\textbf{phone}} \\ \hline
[ 113 ]
Exportar la estructura y los datos
XML
Este formato es muy popular hoy en día para intercambiar datos. Si elige XML en la
interfaz Exportar no produce una elección de opciones. Lo que sigue son los datos de
salida para la tabla autor:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!--
-
- phpMyAdmin XML Dump
- version 2.5.5-rc2
- http://www.phpmyadmin.net
-
- Host: localhost
- Tiempo de generación: En 22, 2004 a 03:21 PM
- Versión del servidor: 4.0.11
- Versión de PHP: 4.3.1
-->
<!--
- Base de datos: 'dbbook'
-->
<dbbook>
<!-- Table authors -->
<autor>
<autor_id>1</autor_id>
<nombre_autor>John Smith</nombre_autor>
<teléfono >111-2222</teléfono>
<código país></código país>
</autor>
<autor>
<autor_id>2</autor_id>
<nombre_autor >Maria Sunshine</nombre_autor>
<teléfono>111-2222</teléfono>
<código país></código país>
</autor>
<autor>
<autor_id>101</autor_id>
<nombre_autor >Melanie Smith</nombre_autor>
<teléfono>111-2222</teléfono>
<código país></código país>
</autor>
[ 114 ]
Capítulo��7
<autor>
<autor_id>100</autor_id>
<nombre_autor>Paul Smith</nombre_autor>
<teléfono>111-2222</teléfono>
<código país ></código país
</autor>
</dbbook>
Native MS Excel
Desde la versión 2.6.0, phpMyAdmin ofrece un módulo experimental para exportar
directamente en formato .xls, el formato nativo de hoja de cálculo que MS Excel
y OpenOffice Calc entienden. Cuando este soporte está activado (más en este
momento) vemos una nueva elección de exportación:
[ 115 ]
Exportar la estructura y los datos
1. Asegúrese que el servidor PHP tiene soporte PEAR ( el comando pear fallará
si no tenemos soporte PEAR). PEAR está documentado en http://pear.
php.net.
2. Si tenemos PHP en el modo seguro, tenemos que asegurarnos que tenemos
permiso para incluir los módulos PEAR. Asumiendo que los módulos estén
bajo /usr/local/lib/php, debemos tener la línea safe_mode_include_dir
= /usr/local/lib/php in php.ini.
3. Cuando instalamos el módulo con pear -d preferred_state=beta install
-a Spreadsheet_Excel_Writer (ya que el módulo en estos momentos está
en beta). Este comando extrae los módulos necesarios de Internet y los instala
en nuestra infraestructura PEAR.
4. Necesitamos un directorio temporal; que esté bajo el directorio principal de
phpMyAdmin; para generar .xls. Se puede crear en un sistema Linux con
mkdir tmp ; chmod o+rwx tmp.
5. Configuramos el parámetro $cfg['TempDir'] en config.inc.php a './tmp'.
Exportación de la tabla
En la vista tabla , el enlace Exportar muestra el sub-panel de exportación de una
tabla específica. Es similar a la exportación de la base de datos, a excepción que no
hay un selector de tabla. Sin embargo, hay una sección adicional para exportaciones
fraccionadas antes del sub-panel Guardar como.
[ 116 ]
Capítulo��7
Exportaciones selectivas
En varios lugares de la interfaz de phpMyAdmin, podemos exportar los resultados
que vemos o elegir que filas queremos exportar.
[ 117 ]
Exportar la estructura y los datos
[ 118 ]
Capítulo��7
Exportar y recuadros
Cada vez que vemos resultados (cuando navegamos o buscamos, por ejemplo),
podemos marcar el recuadro que está al lado de la fila que queremos y usar Para
los elementos seleccionados: Con el icono exportar para generar una exportación
parcial de sólo esas filas.
[ 119 ]
Exportar la estructura y los datos
Resumen
En este capítulo:
[ 120 ]
Importar la estructura y los
datos
En este capítulo aprenderemos a recuperar los datos exportados que hemos creado
para hacer una copia de seguridad o para hacer una transferencia. Los datos
exportados también pueden provenir de autores de otras aplicaciones y pueden tener
toda la estructura de fundación de estas aplicaciones y algunos datos de ejemplo.
Límites de tiempo
Primero tengamos en cuenta el límite de tiempo. En config.inc.php, la directiva
de configuración $cfg['ExecTimeLimit'] asigna, por defecto, un tiempo de
ejecución máximo de 300 segundos (cinco minutos) para cualquier programa de
phpMyAdmin, incluyendo los procesos de datos cuando se ha cargado el archivo.
Un valor de 0 quita el límite y en teoría nos da tiempo infinito para completar
la operación de importe. Si el servidor PHP está funcionando en modo seguro,
modificar $cfg['ExecTimeLimit'] no tendrá ningún efecto, porque los límites
que están en php.ini o en una configuración relacionadas con el usuario (como por
ejemplo .htaccess o una configuración de proveedor virtual) tienen preferencia
sobre este parámetro.
Por supuesto, el tiempo que tiene en efectivo depende de dos factores clave:
Otros límites
Si usamos el archivo php.ini o la configuración de proveedor virtual del servidor
Web, el administrador del sistema puede controlar las cargas del servidor.
El parámetro memory_limit sirve para evitar que los procesos del servidor Web hijo
tomen mucha memoria del servidor Web; phpMyAdmin también funciona como un
proceso hijo. Así pues, la gestión de cargas de fichero normales, en especial las copias
de memoria comprimidas, pueden verse comprometida si ponemos un valor
[ 122 ]
Capítulo��8
Para terminar, las cargas de los archivos deben estar permitidas configurando
file_uploads en On. Sino, phpMyAdmin ni siquiera mostrará el diálogo Posición
del archivo texto. Sería inútil presentar este diálogo ya que la conexión sería rechaza
más tarde por el servidor PHP.
1. En las versiones superiores de phpMyAdmin existe una pestaña Importar, es aquí donde
se encuentran todos diálogos Importar.
[ 123 ]
Importar la estructura y los datos
[ 124 ]
Capítulo��8
[ 125 ]
Importar la estructura y los datos
Otra diferencia es que phpMyAdmin se basa en los mecanismos LOAD DATA INFILE
o LOAD DATA LOCAL INFILE para hacer la importación en lugar de procesar los datos
internamente. Estas sentencias son la manera más rápida de importar texto en
MySQL. Hacen que MySQL empiece una operación de lectura del archivo que
está en el servidor MySQL (LOAD DATA INFILE) o de otro lugar (LOAD DATA LOCAL
INFILE), que, en este contexto, siempre es el sistema de archivos del servidor Web. Si
el servidor MySQL está en un ordenador diferente al del servidor Web, no podremos
usar el mecanismo LOAD DATA INFILE.
Requisitos
Confiar en el servidor MySQL tiene algunas consecuencias. Para usar LOAD DATA
INFILE es necesario que el usuario conectado tenga un premiso FILE global.
Además, los procesos del servidor MySQL deben leer el archivo.
Si usamos el modificador LOCAL en LOAD DATA LOCAL INFILE, debemos tener permiso
del servidor MySQL y de la librería cliente MySQL que usa PHP.
Para encontrar la página diálogo de importación tenemos que estar en la vista tabla
de la tabla autor.
• La página Estructura.
• La página Importar.
• La pestaña Importar archivos en la ventana de consulta.
Hay muchas opciones porque los datos pueden provenir de varios lugares; la manera
de codificar los campos e incluso el carácter de fin de línea varían dependiendo del
programa que se ha usado para genera el archivo o el sistema operativo fuente.
Primero vemos la pregunta familiar Posición del archivo texto. Elegimos nuestro
archivo autor.csv y por ahora sólo hacer clic en Enviar, exploraremos otras
opciones más tarde.
[ 127 ]
Importar la estructura y los datos
Esta pantalla muestra la sentencia exacta LOAD DATA LOCAL INFILE que se
ha usado. Tenga en cuenta que el archivo que se ha usado era /tmp/phpU0HGGG y
no autor.csv, porque PHP, guardado como un archivo temporal, leído y cargado
por MySQL.
Opciones de LOAD
Por defecto, la operación LOAD no modificará los datos existentes (basados en claves
primaria o única), pero la opción Sustituir le ordena a phpMyAdmin añadir una
palabra clave REPLACE al comando generado, que modificará los datos y las claves
que sean las mismas.
Podemos especificar el carácter que termina cada campo, el carácter que cierra los
datos, y el carácter que escapa al carácter de cierre. Normalmente es \. Por ejemplo,
con un carácter final doble comilla, si el campo de datos tiene comillas dobles, debe
ponerse así: "algunos datos \"otros datos".
Para las Líneas terminadas por, la elección usar es \n para los sistemas basados en
UNIX, \r\n para DOS o los sistemas Windows y \r para los sistemas basados en
Mac. Si tenemos dudas, podemos usar un editor hexadecimal en nuestro ordenador
cliente (no forma parte de phpMyAdmin) para examinar los códigos exactos.
Por defecto, phpMyAdmin espera un archivo CSV con el mismo número de campos
y el mismo orden de campos que la tabla destino, pero esto se puede cambiar si
escribimos una lista separada por comas de los nombres de columna en Nombre
de columna, respetando el formato del archivo fuente. Por ejemplo, digamos que
nuestro archivo fuente contiene información sobre el ID del autor y su nombre:
"1", "John Smith"
"2", "Maria Sunshine"
[ 128 ]
Capítulo��8
[ 129 ]
Importar la estructura y los datos
Esta característica también está disponible para los archivos que están en el directorio
de carga. Los archivos deben tener extensiones como .bz2, .gz, .sql.bz2 o .sql.gz.
Resumen
En este capítulo hemos aprendido:
[ 130 ]
Buscar datos
Aquí presentamos un mecanismo que se puede usar para encontrar los datos que
estamos buscando en lugar de examinar las tablas página por página y ordenarlas.
Este capítulo cubre las búsquedas de una tabla y de bases de datos enteras. El
capítulo 13 complementa este capítulo y presenta consultas multi-tabla por ejemplo.
Por defecto, todos los campos están seleccionados, pero podemos controlar los
campos haciendo clic para elegir los necesarios.
[ 132 ]
Capítulo��9
[ 133 ]
Buscar datos
Si hacemos clic en Continuar obtendremos los resultados que se ven abajo. Los cuatro
campos que se muestran son los que se han elegido en el diálogo Elegir campos:
Vista imprimir
Vemos los enlaces Vista imprimir y Vista imprimir (con textos completos) en
la página de resultados. Estos enlaces producen un informe más formal de los
resultados (sin la interfaz de navegación) que van directamente a la impresora. En
nuestro caso, si usamos la Vista imprimir vemos lo siguiente:
[ 134 ]
Capítulo��9
carácter % (que se ajusta a varios caracteres) y el carácter subrayado (_) (que se ajusta
a un sólo carácter). De este modo podemos usar %cine% para que phpMyAdmin
encuentra cualquier sub-cadena que se ajuste a 'cine'. Si hubiésemos dejado los
comodines, encontraríamos ajustes exactos con esa palabra.
Desde la versión 2.6.0 de phpMyAdmin, este ajuste de sub-cadenas se ha hecho
más fácil de acceder al añadir un menú deplegable de Operadores. Sólo tenemos
que escribir la palabra cine y usar el operador LIKE %...% para que se haga ese
ajuste. Deberíamos usar esta forma del operador LIKE en tablas grandes (miles de
filas), ya que MySQL no usa un índice de recuperación de datos en este caso, lo cual
nos llevaría a un tiempo de media hora (o más). Por eso este operador no aparece
por defecto en la lista deplegable, a pesar que este método de búsqueda se usa
comúnmente en las tablas más pequeñas.
También especificamos que los resultados se ordenan por título (en orden
ascendente). Aquí tenemos una muestra de pantalla que nos muestra como pedir
una búsqueda de cine con el operador LIKE %...%.
[ 135 ]
Buscar datos
Combinar criterios
Podemos usar criterios múltiples para la misma consulta (por ejemplo, encontrar
todos los libros ingleses de más de 300 páginas). Aquí vemos que hay más elecciones
de comparación ya que el campo número_pag es numérico.
[ 136 ]
Capítulo��9
Podemos tener una lista de condiciones de búsqueda más compleja que se escribiría
en el mismo recuadro de texto, normalmente entre paréntesis y con operadores AND
u OR.
[ 137 ]
Buscar datos
Cuando los datos están ocultos en algún lado de la base datos o cuando los mismos
datos pueden estar en varias columnas (por ejemplo, la columna título o la columna
descripción), es más fácil usar el método de búsqueda base de datos.
[ 138 ]
Capítulo��9
Podemos elegir las tablas para restringir la búsqueda o seleccionar todas las tablas.
Ya que sólo tenemos dos tablas (pequeñas), elegimos ambas.
Esta es una vista del número de parecidos y las tablas relevantes. Puede que
encontremos parecidos en tablas en las que no estamos interesados; sin embargo,
los parecidos que parecen prometedores, podemos Examinarlos en la página de
resultados, o incluso Suprimir las filas encontradas.
Resumen
En este capítulo hemos cubierto:
[ 139 ]
Operaciones de las tablas
En los anteriores capítulos, hemos abordado los campos de las tablas. En este
capítulo, aprenderemos a desempeñar algunas operaciones que influyen las tablas
como un todo. Cubriremos los atributos de las tablas y como modificarlos, también
discutiremos las operaciones de tablas múltiples.
En la vista tabla, los diferentes enlaces que activan las operaciones de la tabla se han
juntado en una sub-página: Operaciones. Aquí tiene una muestra de esta página:
Operaciones de las tablas
Mantenimiento de la tabla
Una tabla , durante su vida, se modifica repetidamente, crece y decrece. Puede que el
servidor se interrumpa, dejando algunas tablas dañadas.
• Verificar tabla: Escanea todas las filas para verificar que los enlaces
suprimidos son correctos. Además, se calcula una suma de control para
verificar la integridad de las claves; si todo está bien deberíamos ver un
mensaje 'OK'.
• Analizar la tabla: Analiza y almacena la distribución de las claves; esto se
usará en las operaciones subsecuentes JOIN para determinar el orden con el
que las tablas deberían unirse.
• Reparar la tabla: Repara datos posiblemente corruptos; ¡tenga en cuenta que
la tabla puede estar tan corrupta que ni siquiera podamos entrar en la vista
tabla para hacerlo! En este caso, vaya a la sección Operaciones de múltiples
tablas para ver como debe repararla.
• Optimizar la tabla: Esto es útil cuando la tabla tiene overhead. Después de
supresiones masivas de filas o cambios de longitud en los campos VARCHAR,
quedan bites perdidos en la tabla. phpMyAdmin nos advierte en varios
lugares (por ejemplo en la vista estructura), si ve que es necesario optimizar
la tabla. Esta operación es una especie de defragmentación de la tabla; está
disponible si el tipo de la tabla es MyISAM o Berkeley DB.
• Limpiar la tabla: Esto debe hacerse cuando han habido numerosos errores
de conexión y el servidor MySQL bloquea las siguientes conexiones.
Limpiar borrará algunos caches internos y permitirá que recomiencen las
operaciones normales.
• Defragmentar la tabla: Inserciones y supresiones aleatorias en una tabla
InnoDB fragmentan su índice. Esta tabla debería defragmentarse de forma
periódica para recuperar los datos con más rapidez.
[ 142 ]
Capítulo���
10
Tipo de tabla
El primer atributo que podemos cambia es el tipo de tabla:
Este orden por defecto durará mientras no haya cambios en la tabla (no inserciones,
supresiones o actualizaciones). Es por eso que phpMyAdmin muestra la alarma
(una vez).
[ 144 ]
Capítulo���
10
Si insertamos otra fila, que describa un libro nuevo del autor 1 y luego hacemos clic
en Examinar, el libro no se mostrará junto con el resto de libro de este autor porque
la clasificación se ha hecho antes de la inserción.
[ 145 ]
Operaciones de las tablas
Mover una tabla no está soportado directamente por MySLQ, de modo que
phpMyAdmin tiene que crear la tabla en la base de datos destino, copiar los datos y
para terminar eliminar la tabla fuente.
La Única copia de la estructura se hace para crear una tabla de test que tiene la
misma estructura.
Como ejemplo de cuando podemos adjuntar datos es cuando los datos de los libros
provienen de diferentes fuentes (varios editores), están almacenados en más de una
tabla y queremos agregar los datos en un lugar.
[ 146 ]
Capítulo���
10
[ 147 ]
Operaciones de las tablas
Resumen
En este capítulo hemos cubierto las operaciones que podemos desempeñar en las
tablas y hemos incluido:
[ 148 ]
Sistema relacional
Bienvenidos a la parte del libro en la que empezamos a cubrir las características
avanzadas. El sistema relacional les permite a los usuarios hacer más cosas con
phpMyAdmin como verá en los siguientes capítulos. Este capítulo específico explica
como instalar la infraestructura de tablas enlazadas, que es un prerrequisito para
tener las características avanzadas y explica como definir las relaciones interiores de
las tablas.
¿MySQL relacional?
Cuando los programadores de aplicaciones usan PHP y MySQL para construir
interfaces Web u otras aplicaciones de manipulación de datos, normalmente
establecen relaciones entre las tablas , usando las consultas SQL existentes. Por
ejemplo, 'haz una factura con todos sus objetos' y 'saca todos los libros de un autor'.
InnoDB
Apareció un nuevo tipo de tabla (InnoDB) durante el desarrollo de phpMyAdmin.
El sub-sistema InnoDB tiene su propia página Web en http://www.innodb.com.
Ya que el sub-sistema InnoDB debe activarlo el administrador del sistema puede que
no esté disponible en todos los servidores MySQL. Siempre que sea posible debemos
usar el tipo de tabla InnoDB porque:
• Soporta la integridad referencial basada en claves foráneas, que son claves
en un tabla (o referencia) foránea. En contraste, si solo usa las relaciones
internas (se discutirá más tarde) phpMyAdmin no crea una verificación
automática de la integridad referencial.
• Las definiciones exportadas de las tablas InnoDB contienen las relaciones
definidas y por ello se pueden importar con mayor facilidad y para una
mejor interoperatividad entre servidores cruzados.
La característica de claves foráneas de las tablas InnoDB; sólo sirve para las tablas
InnoDB; puede reemplazar de manera efectiva la parte de la infraestructura de
phpMyAdmin que abarca las relaciones. Ahora veremos como phpMyAdmin crea la
interfaz para el sistema de claves foráneas de InnoDB.
Posición de la infraestructura
Hay dos lugares posibles para almacenar estas tablas :
Para crear la estructura necesaria que esté acorde con nuestra versión actual
de phpMyAdmin, hay un archivo comando llamado create_tables.sql está
disponible en el subdirectorio scripts del directorio de instalación phpMyAdmin.
Sin embargo, no deberíamos ejecutarlo a ciegas antes de entender las posibles
elecciones: La instalación multi-usuario o la instalación de un usuario.
[ 151 ]
Sistema relacional
Instalación multi-usuario
En esta configuración, tenemos una base de datos distintiva (pmadb) para
almacenar los metadatos y nuestro control de usuario tiene permisos específicos
para esta base de datos. Cada usuario escribirá su nombre de acceso y su contraseña,
que se usará para acceder a su base de datos. Sin embargo, siempre que se tenga que
acceder a pmadb, phpMyAdmin usará los privilegios del control de usuario.
Primero tenemos que asegurarnos que el control de usuario pma se ha creado, tal como
se explicaba en el capítulo 2 y que su definición en config.inc.php es apropiada:
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'bingo';
[ 152 ]
Capítulo���
11
Ahora tenemos que ajustar todos los parámetros de las características relacionales
en config.inc.php. Aquí usaremos los valores por defecto mencionados en los
comentarios que están dentro del archivo; estos nombres de base de datos y nombres
de tablas son los mismos que acabamos de crear:
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i][ 'bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i][ 'relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$ i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$ i]['history'] = 'pma_history';
Como los nombres de las tablas son sensibles a las mayúsculas y las
minúsculas, debemos usar los mismos nombres que ha creado el
programa de instalación. Somos libres para cambiar los nombres de
las tablas (vea la parte derecha de las directivas de configuración que
están en la lista) siempre que los cambiemos en la base de datos del
mismo modo.
[ 153 ]
Sistema relacional
Instalación de un usuario
Incluso si el administrador de sistemas sólo nos ha dado permiso para una base de
datos, podemos usar todas las características relacionales de phpMyAdmin.
[ 154 ]
Capítulo���
11
La primera modificación que hay que hacer es suprimir las líneas de comentarios
(que empiezan con dos guiones (-)) para asegurarse que no interfieren (en algunas
versiones de phpMyAdmin, la rutina de importación no los entiende). Entonces
borramos las siguientes líneas:
DROP DATABASE 'phpmyadmin';
CREATE DATABASE 'phpmyadmin';
USE phpmyadmin;
Ahora estamos preparados para ejecutar el programa. Hay dos maneras de hacerlo:
El último paso es ajustar todos los parámetros config.inc.php que relacionan las
características relacionales. Usamos los valores por defecto mencionados dentro del
archivo, a excepción del parámetro pmadb.
$cfg['Servers'][$i]['pmadb'] = 'dbbook';
[ 155 ]
Sistema relacional
Vista relación
Después de la instalación de la infraestructura de las tablas enlazadas, hay más
opciones disponibles en la vista base de datos y la vista tabla. Ahora examinaremos
el nuevo enlace de la vista tabla: Vista relación. Esta vista se usa para:
Ya que nuestro objetivo es crear una relación entre la tabla libros (que tiene el ID del
autor) y la tabla autores (que describe cada autor por su ID), empezamos en la vista
tabla de la tabla libros y hacemos clic en la vista relación.
Esta pantalla nos permite crear relaciones internas (que se almacenan en la tabla
pma_relation), porque MySQL no tiene una noción relacional para las tablas
MyISAM. El carácter guión doble (--) indica que no hay relaciones (enlaces) a una
tabla foránea.
[ 156 ]
Capítulo���
11
Definir la relación
Podemos relacionar cada campo de la tabla libros a un campo de otra tabla (o en
la misma tabla), porque a veces las relaciones de auto referencia son necesarias. La
interfaz en encuentra las claves únicas y no únicas en todas las tablas de la misma
base de datos y las presenta en un menú desplegable. La elección apropiada aquí
es seleccionar el campo autor_id correspondiente con el campo autor_id de la tabla
autor. Esto también se llama definir la clave foránea.
[ 157 ]
Sistema relacional
La definición de esta relación ya esta hecha. Por favor tenga en cuenta que aunque no
hemos unido ninguno de los campos de la tabla autor con otra tabla, esto se puede
hacer. Por ejemplo, podríamos tener un código del país en esta tabla y podríamos
crear una relación con el código de país de una tabla país.
Discutiremos los beneficios de haber definido esta relación más adelante, pero
primero, tenemos que ver que pasa si nuestras tablas son tipo InnoDB.
Relaciones InnoDB
El tipo de tabla InnoDB nos ofrece un sistema de clave foránea. Para probarlo,
primero cambiamos nuestras tablas libros y autor al tipo InnoDB. Podemos hacerlo
en la vista tabla desde la sub-página Operaciones. Empezamos ha hacerlo con la
tabla autor:
[ 158 ]
Capítulo���
11
Asumamos que lo hemos hecho y que hemos cambiado la tabla libros a InnoDB.
Abrir la tabla libros y entrar en la vista relación nos muestra una página diferente:
[ 159 ]
Sistema relacional
Quizás la página también nos indique que nuestra versión de MySQL no esté
actualizada (tiene que ser 4.0.13 o superior). Uno de las implicaciones de esto es: No
podremos suprimir la relación definida en InnoDB. Por eso phpMyAdmin nos hace
esta amable (¡y crucial!) indicación.
En las elecciones posibles de la clave relacionada, vemos las claves definidas en otras
tablas InnoDB.
Intentemos suprimir la relación interna del campo autor_id y añadir (a pesar que no
funciona) una relación tipo InnoDB para el campo autor_id:
Hacer clic en Continuar genera un mensaje de error: ¡No hay un índice definido!
(autor_id). Esto pasa porque las definiciones de claves foráneas de InnoDB solo se
pueden hacer si ambos campos se han definido como índices (hay otras reglas que
están explicadas en el manual de MySQL).
[ 160 ]
Capítulo���
11
En la versión actual de phpMyAdmin (2.8.0.4) no podemos ver las tablas desde una
base de datos diferente para definir una relación en ellas.
Por favor tenga en cuenta que si elegimos esta manera, el 'campo presentación' para
la tabla enlazada (aquí autor) no se puede definir; pertenece a la infraestructura de
phpMyAdmin; de forma que perderíamos unos de los beneficios (ver la descripción
asociada con la clave foránea).
[ 161 ]
Sistema relacional
Si movemos el puntero del ratón sobre autor_id nos muestra el nombre del autor (tal
y como se había definido en el campo de presentación de la tabla autor):
[ 162 ]
Capítulo���
11
Esta lista desplegable aparecerá si hay un máximo de 200 filas en la tabla foránea.
Para tablas más grandes aparece una ventana emergente: La ventana de la tabla
foránea que se puede examinar.
[ 163 ]
Sistema relacional
Este icono abre otra ventana que presenta los valores de la tabla software y un
selector de página. En la izquierda, los valores se clasifican con el valor de la clave
(aquí la columna id) y en la derecha, se clasifican por su descripción:
Un enlace aparece en cada relación definida (aquí autor_id -> autor.autor_id), hacer
clic empieza una verificación. La presencia de la clave correspondiente a la tabla
foránea se verifica por cada fila y se hace un informe de errores. Si la página de
resultados tiene un informe de resultados con cero filas: ¡buenas noticias!
[ 164 ]
Capítulo���
11
Esta operación existe para las tablas no InnoDB porque ni MySQL ni phpMyAdmin
no refuerzan la integridad referencial. Es posible, por ejemplo, importar datos en la
tabla libros con valores inválidos para autor_id.
Comentar columnas
La estructura de MySQL soportar añadir comentarios a una tabla pero no a una
columna. En la vista relación, esta característica es posible gracias a los metadatos
de phpMyAdmin.
1. Las versiones superiores de MySQL soportan los comentarios de las columnas, por eso
en las versiones superiores de phpMyAdmin, los comentarios de las columnas están en el
enlace Editar de la vista base de datos o cuando se crea una tabla nueva.
[ 165 ]
Sistema relacional
Resumen
En este capítulo:
[ 166 ]
Escribir comandos SQL
Este capítulo explica como podemos escribir nuestros propios comandos (consultas)
SQL en phpMyAdmin y como podemos mantener un historial de esas consultas.
Para que aparezca una consulta por defecto en este recuadro, podemos configurar
la directiva $cfg['DefaultQueryDatabase'] que está vacía por defecto. Podemos
escribir una consulta como SHOW TABLES FROM %d en esta directiva. El parámetro
%d de esta consulta se reemplazará por el nombre de la base de datos abierta, lo que
resulta en SHOW TABLES FROM 'dbbook' en el recuadro de consulta.
Escribir comandos SQL
Vista tabla
Hay un recuadro disponible en la vista tabla algo diferente del anterior.
[ 168 ]
Capítulo���
12
WHERE 1 es una condición que siempre es cierta de modo que se puede ejecutar la
consulta tal cual. Podemos cambiar 1 por la condición exacta que queremos escribir o
escribir una consulta totalmente diferente.
Selector de campos
El selector de Campos es una manera de agilizar la escritura de una consulta. Si
elegimos un campo haciendo clic en las flechas <<, el nombre de este campo se copia
en la posición actual del cursor del recuadro de consulta. Aquí hemos seleccionado el
campo autor_id, suprimimos el dígito 1 y hacemos clic en <<. Entonces añadimos la
condición = 2.
La opción Mostrar esta consulta otra vez (que está marcada por defecto) quiere decir
que la consulta se quedará en el recuadro después de su ejecución si todavía estamos
en la misma página. Esto es mejor para una consulta como UPDATE o DELETE, que
afecta a la tabla pero que no produce una página separada de resultados.
[ 169 ]
Escribir comandos SQL
Ventana de consulta
En el capítulo 3 hemos discutido el propósito de esta ventana y el procedimiento
para cambiar algunos parámetros (como las dimensiones). Esta ventana se puede
abrir con facilidad desde el panel de la izquierda usando el icono SQL o el enlace
Ventana de consulta, es muy conveniente para escribir una consulta y verificarla:
[ 170 ]
Capítulo���
12
[ 171 ]
Escribir comandos SQL
Vemos las últimas consultas con éxito (en orden invertido) y la base de datos en
la que se han hecho. Sólo los tipos del recuadro de consulta se mantienen en el
historial, no las consultas generadas por phpMyAdmin (por ejemplo al hacer clic en
Examinar). Se puede hacer clic en ellas para ejecutarlas de inmediato y hay un botón
Editar disponible para mostrar una consulta registrada en el recuadro de consulta
para editarla.
[ 172 ]
Capítulo���
12
Es normal recibir un error Entrada duplicada: El valor 100 ya existe. ¿Pero que
pasa con la siguiente sentencia INSERT? La ejecución para en el primer error
porque $cfg['IgnoreMultiSubmitErrors'] está configurado FALSE, lo que le
dice a phpMyAdmin que no ignore los errores en las sentencias múltiples. Si está
configurado TRUE, el programa intenta todas las sentencias con éxito y conseguimos:
[ 173 ]
Escribir comandos SQL
[ 174 ]
Capítulo���
12
En los anteriores ejemplos, fmtType estaba configurado 'text', porque este modo es
más legible en un libro. Este modo inserta rupturas de línea en puntos lógicos dentro
de la sentencia MySQL pero aquí no cambia el color. Con fmtType configurado en
'html' el informe de las sentencias SQL de phpMyAdmin sería:
Validador SQL
Cada vez que phpMyAdmin transmite una consulta, el servidor MySQL la interpreta y
manda comentarios. La sintaxis de la consulta debe seguir las reglas de MySQL que no
tienen el mismo estándar que SQL. Si seguimos el estándar de SQL nos aseguramos
que nuestras consultas se podrán usar con cualquier implementación de SQL.
Se ofrece un servicio externo gratuito: El validador Mimer de SQL. Está
directamente disponible en phpMyAdmin, valida nuestra consulta teniendo en
cuenta Core SQL-99 rules y envía un informe. La página inicial del Validador está en
http://developer.mimer.com/validator/index.htm.
[ 175 ]
Escribir comandos SQL
Si tenemos problemas con este comando debido a que algunos módulos están en
estado beta, podemos ejecutar el siguiente comando, que instala SOAP y otros
módulos dependientes:
pear -d preferred_state=beta install -a SOAP
También tenemos que habilitar el validador (ya que puede haber otros validadores
disponibles en versiones futuras de phpMyAdmin). Esto se hace al configurar $cfg[
'SQLValidator']['use'] en TRUE.
Se puede acceder al validador con una cuenta anónima validador, por defecto, como
se configura con lo siguiente.
$cfg['SQLValidator']['username'] = '';
$cfg['SQLValidator']['password'] = '';
[ 176 ]
Capítulo���
12
Tenemos la opción de Saltar Validar SQL para ver nuestra consulta original.
[ 177 ]
Escribir comandos SQL
Cada vez que el validador encuentra un problema añade un mensaje como {error: 1}
en el punto de error y una nota de pie de página en el informe. Esta vez, el nombre
de la columna idioma no es estándar, de modo que el validador nos dice que en este
punto esperaba un identificador.
Otro caso es el de las comillas. Si hemos hecho clic en Examinar de la tabla libros,
phpMyAdmin genera select * from 'libros', cerrando el nombre de la tabla con
comillas. Esta es la manera de MySQL de proteger los identificadores, que pueden
contener caracteres especiales, como por ejemplo espacios, caracteres internacionales
o palabras reservadas. Sin embargo, si enviamos esta consulta al Validador, éste nos
muestra que las comillas no están acordes con el estándar SQL. Incluso nos da dos
errores: Uno por cada comilla.
Resumen
En este capítulo hemos cubierto:
• El propósito de los recuadros de consulta.
• Donde podemos encontrarlos.
• Como usar el selector de campos.
• Algunas opciones de la ventana de consulta.
• Como tener un historial de los comandos escritos.
• Consultas con sentencias múltiples.
• Usar el validador SQL.
[ 178 ]
Generador de consultas
multi-tabla
Las páginas Búsqueda en la vista base de datos o tabla son para búsquedas de una
tabla. En este capítulo cubriremos la característica Consulta por ejemplo (CPE) de
múltiples tablas que está disponible en la vista base de datos.
Muchos de los usuarios de phpMyAdmin trabajan en la vista tabla, tabla por tabla,
de modo que tienden a olvidarse del generador de consultas multi-tabla, que es
una característica maravillosa para afinar consultas. Para abrir la página de esta
característica vista base de datos de la base de datos específica (el generador de
consultas sólo tiene soporte para funcionar con una base de datos a la vez) y hacemos
clic en Consulta.
La muestra de pantalla que sigue muestra la página CPE inicial. Contiene los
siguientes elementos:
• Columnas criterio.
• Una interfaz para añadir filas criterio.
• Una interfaz para añadir columnas criterio.
Generador de consultas multi-tabla
• Un selector de tabla.
• La zona de consulta.
• Botones para actualizar o ejecutar la consulta.
Elegir tablas
La selección inicial incluye todas las tablas. En consecuencia, el selector de campos
tiene un gran número de campos. Para nuestro ejemplo, trabajaremos solo con las
tablas autor y libros:
[ 180 ]
Capítulo���
13
Columna de criterios
Se ofrecen tres columnas de criterios por defecto. En esta sección se discuten
las opciones que tenemos para editar sus criterios, que incluye opciones para
seleccionar campos, clasificar columnas individuales, escribir condiciones para
columnas individuales, etc.
Para mostrar todos los campos de la tabla autor, elegimos 'autor'.* y verificamos el
recuadro Mostrar, sin escribir un Orden y un Criterio. En nuestro caso, elegimos
'autor'.'nombre_autor' ya que podemos escribir algunos criterios para el nombre
de autor.
[ 181 ]
Generador de consultas multi-tabla
Clasificar
Por cada columna individual elegida podemos especificar una clasificación (en
orden Ascendente o Descendente) o dejar que está línea se quede intacta (lo que
quiere decir que no hay clasificación). Si elegimos más de una columna clasificada, la
clasificación se hará con prioridad de la izquierda sobre la derecha.
Mostrar
Elegimos Mostrar para ver la columna en los resultados. Algunas veces, puede
que queramos aplicar un criterio a una columna pero no incluirlo en la página de
resultados. Aquí añadimos el campo teléfono, pedimos que lo clasifique y elegimos
mostrar tanto el nombre como el número de teléfono. También le pedimos que
clasifique el nombre en orden ascendente. La clasificación se hará primero por
nombre y luego por número de teléfono si los nombres son idénticos. Esto sucede
porque hay un criterio de columna a la izquierda de la columna teléfono y por ello
tiene mayor prioridad:
Modificar la consulta
En cualquier punto, podemos hacer clic en el botón Modificar consulta para ver el
progreso la consulta que hemos generado. Seguramente, tendremos que hacer clic
al menos una vez antes de ejecutar la consulta. Por ahora, hagamos clic para ver la
consulta que hemos generado en la zona de consulta. En los ejemplos que siguen,
haremos clic en Modificar consulta después de cada modificación:
[ 182 ]
Capítulo���
13
Hemos elegido dos tablas, pero todavía no hemos elegido ninguna columna de la
tabla libros. De forma, que esta tabla no se menciona en la consulta generada.
Criterios
En la línea de Criterios , escribimos una condición (respetando la sintaxis de la
cláusula WHERE SQL) para cada una de las columnas correspondientes. Por defecto
tenemos dos filas de criterios. Para encontrar todos los autores con Smith en su
nombre, usamos un criterio LIKE y hacemos clic en Actualizar consulta:
Tenemos otra línea disponible para escribir criterios adicionales. Digamos que
también encontrar a la autora 'Maria Sunshine'. Esta vez usamos una condición =.
Las dos filas de condiciones se unirán por OR, seleccionado por defecto en la parte
izquierda de la interfaz.
[ 183 ]
Generador de consultas multi-tabla
Para demostrar mejor que la condición OR enlaza ambas filas de criterios, ahora
añadamos una condición al número de teléfono:
[ 184 ]
Capítulo���
13
Si examinamos el posicionado de los operadores AND y OR, podemos ver que las
primeras condiciones están enlazadas con AND (porque AND se elige en la columna
nombre_autor) y la segunda fila de condiciones está enlazada con el resto con OR.
La condición que acabamos añadir (like '%8%') no significa que buscamos a todo el
mundo, ya que en un ejercicio del capítulo 12 cambiamos el número de teléfono de
todos los autores con nombre 'Smith' a '444-5555'.
Si queremos escribir otro criterio en la misma columna, sólo tenemos que añadir una
fila de criterios.
[ 185 ]
Generador de consultas multi-tabla
[ 186 ]
Capítulo���
13
Joins automáticas
Ahora añadamos algunos campos de nuestra tabla libros y veamos que pasa:
phpMyAdmin usa su conocimiento de las relaciones definidas entre las tablas para
generar una LEFT JOIN en el campo clave común autor_id.
[ 187 ]
Generador de consultas multi-tabla
Ejecutar la consulta
Hacer clic en el botón de Ejecutar consulta hace que se ejecute la consulta. En la
versión actual de phpMyAdmin (2.8.0.4) no hay una manera fácil (excepto si hacemos
clic en el botón Volver del navegador) Volver a la página de generación de la consulta
cuando hemos ejecutado nuestra consulta. En el siguiente capítulo (Marcadores)
discutiremos como guardar la consulta generada para ejecutarla más tarde.
[ 188 ]
Capítulo���
13
Resumen
Hemos cubierto los siguientes conceptos:
[ 189 ]
Marcadores
En este capítulo cubrimos una de las características de las tablas enlazadas: Los
marcadores de las consultas. Poder etiquetar las consultas y recuperar por su
etiqueta más tarde puede ahorrarnos mucho tiempo. En el capítulo 12 hemos
aprendido sobre la característica del historial SQL, que almacena las consultas
automáticamente (temporal o permanentemente).
Un marcador también puede ser una parte variable, como se explica en la sección
Pasar un valor de parámetro a un marcador más tarde en el capítulo.
No hay una sub-página marcador para administrar los marcadores. En su lugar, las
diferentes acciones sobre los marcadores están disponibles en páginas específicas
como por ejemplo las páginas de resultados y las páginas recuadro de consulta.
Marcadores
[ 192 ]
Capítulo���
14
Este diálogo marcador se puede ver en cualquier página que tenga resultados. De
hecho, solo tenemos que hacer clic en Examinar en cualquier tabla para obtener
resultados y luego almacenar esta consulta como un marcador. Sin embargo, no
tiene mucho sentido guardar una consulta (en un marcador) que se puede hacer con
facilidad con un clic.
[ 193 ]
Marcadores
Así es como podemos generar marcadores para las consultas no SELECT como
UPDATE, DELETE, CREATE TABLE, etc.
Marcadores multi-consulta
Se puede almacenar más de una consulta en un marcador (separadas por un punto
y coma). Esto es muy útil para las consultas no SELECT. Colocar muchas consultas
SELECT no nos dará el resultado que queremos ya que sólo vemos los datos del
último SELECT.
[ 194 ]
Capítulo���
14
El sistema pone números a los marcadores. Hay tres elecciones disponibles para
recuperar un marcador: Ejecutar, Sólo ver y Suprimir (Ejecutar es la acción
por defecto).
Ejecución de un marcador
Si elegimos el primer marcador y hacemos clic en Continuar ejecutaremos la
consulta almacenada y veremos los resultados. La página que resulta de la ejecución
del marcado no tiene otro diálogo para crear un marcado ya que esto es superfluo.
Los resultados que conseguimos no tienen porque ser los mismos que
cuando creamos el marcador. Reflejan los contenidos actuales de la
base de datos. Sólo la consulta se almacena como un marcador.
Manipulación de un marcador
Algunas veces solo queremos asegurarnos que los contenidos de un marcador son
correctos. Aquí elegimos el segundo marcador y elegimos Sólo ver:
Sólo se mostrará la consulta. Entonces podemos hacer clic en Editar y reescribir sus
contenidos. Si lo hacemos, estaremos editando una copia de la consulta marcada
original. Para guardar esta consulta recién editada, podemos guardarla como un
marcador pero esto creará otro marcador incluso si elegimos la misma etiqueta de
marcador. Los marcadores tienen un número identificador además de una etiqueta
elegida por el usuario.
Marcadores públicos
Todos los marcadores que creamos son privados por defecto. Cuando se crea
un marcador, el usuario con el que estamos conectados se almacena junto con el
marcador. Supongamos que elegimos Dejar que todos los usuarios acceder a este
marcador como se muestra en la siguiente pantalla:
[ 195 ]
Marcadores
[ 196 ]
Capítulo���
14
Marcadores parámetros
Si volvemos a mirar el primer marcador que hemos creado (encontrar todos los
libros del autor 1), nos damos cuenta que, aunque es útil, estaba limitado a encontrar
siempre el mismo autor.
En este ejemplo, tenemos dos condiciones con la cláusula WHERE, una que contiene
una sintaxis especial. Si nuestro único criterio en la cláusula WHERE requiriese
un parámetro, podríamos usar una sintaxis como WHERE 1 /* AND autor_id =
[VARIABLE] */.
[ 197 ]
Marcadores
Luego hacemos clic en Continuar y vemos la consulta expandida y los libros del
autor Smith:
[ 198 ]
Capítulo���
14
Resumen
En este capítulo:
[ 199 ]
Documentación del sistema
Producir y mantener una buena documentación sobre la estructura de los datos
es crucial para el éxito del proyecto, en especial cuando se trata de un proyecto
de equipo. Afortunadamente, phpMyAdmin tiene características que se encargan
de esto. Cuando phpMyAdmin genera resultados, siempre hay un enlace Vista
impresión que se puede usar para generar un informe imprimible de los datos. La
característica Vista impresión también se puede usar para producir documentación
básica y se hace con dos pasos. Con el primer clic en la Vista impresión aparece un
informe en la pantalla, con el botón Imprimir que está abajo en la página. Este botón
Imprimir genera un informe formateado para la impresora.
[ 202 ]
Capítulo���
15
Diccionario de datos
Hay disponible un informe más completo sobre las tablas y las columnas de una base
de datos en la vista base de datos, desde la sub-página Estructura. Sólo tenemos que
hacer clic en el Diccionario de datos para obtener un informe sobre todas las tablas
(del que se muestra una parte aquí):
[ 203 ]
Documentación del sistema
La columna MIME está vacía hasta que añadamos información relacionada con
MIME a algunas columnas; esto se explica en el capítulo 16.
[ 204 ]
Capítulo���
15
Ahora enlazaremos esta tabla con la tabla autores. Primero, en la Vista relación de la
tabla países, especificamos el Campo de presentación:
Planear la página
En la versión actual de phpMyAdmin, un esquema relacional no se puede expandir
a múltiples bases de datos. Pero incluso trabajando con una base de datos, el número
de las tablas puede ser grande. Representar las diferentes relaciones entre ellas de
manera clara será un reto. Es por ello que usamos varias páginas, cada una muestra
algunas tablas y sus relaciones.
También tenemos que tener en cuenta las dimensiones del resultado final. Si
imprimimos un folio tenemos menos espacio para mostrar todas nuestras tablas pero
tenemos un esquema legible.
[ 206 ]
Capítulo���
15
Para ayudarnos a configurar las coordenadas exactas, hay disponible un editor visual
para los navegadores con JavaScript activado. Este editor aparece si hacemos clic en
el botón Cambiar el estado del scratchboard una vez, desaparecerá si hacemos clic
en este botón otra vez. En el borrador, podemos mover tablas como deseemos si las
arrastramos y las dejamos, vemos como las coordenadas cambian de acuerdo con los
movimientos. La representación de las tablas que se ven en el borrador es tan sólo
una estimación aproximada, comparado con el resultado final PDF.
[ 207 ]
Documentación del sistema
[ 208 ]
Capítulo���
15
Aquí hay otro ejemplo de la misma definición de página PDF libros, con la parrilla y
sin colores:
[ 209 ]
Documentación del sistema
Para que esto funcione, la librería usa las fuentes TrueType presentes en el sistema
operativo cliente y necesita una interfaz para estas fuentes. La librería está en los
archivos de mapeado de fuentes, en el directorio libraries/fpdf/font.
Para añadir una fuente al archivo de mapeo, primero tenemos que añadirla a la
librería (como se explica en el tutorial disponible en http://www.fpdf.org) y luego
modificar el código fuente pdf_schema.php de phMyAdmin.
Resumen
En este capítulo hemos cubierto las características de documentación que ofrece
phpMyAdmin:
• Vista impresión para una base de datos o una tabla para una lista de tabla
o columnas.
• Diccionario de datos para la lista completa de columnas.
• Esquema relacional PDF, incluyendo como crear y modificar una página de
esquema PDF y usar el editor visual (borrador).
[ 210 ]
Transformaciones basadas
en MIME
Aquí vamos a cubrir una característica muy poderosa de phpMyAdmin: Su
habilidad para transformar los contenidos de las columnas respetando unas reglas
específicas: Las transformaciones. Este capítulo describe como podemos transformar
los contenidos que vemos en el modo Examinar de una tabla. Normalmente, los
contenidos exactos de cada fila se muestran, excepto estos:
Usaremos el término celda para indicar una columna específica de una fila específica.
La celda que contiene la foto de la cubierta del libro 'Recuerdos futuros' (una
columna BLOB) tiene unos datos crípticos como estos %PNG\r\n\Z\n\0\0\0\
rlHDR\ o un mensaje que muestra el tamaño del BLOB. Sería interesante ver un
icono de la imagen directamente en phpMyAdmin, a ser posible la imagen en sí.
• Tipo MIME.
• Navegador transformación.
• Opciones de la transformación.
Tipo MIME
Las especificaciones MIME se han elegido como atributos metadatos para categorizar
el tipo de datos que almacena la columna. Los valores actuales posibles son:
[ 212 ]
Capítulo���
16
• Image/jpeg
• Image/png
• Text/plain
La opción auto detectar del menú aún se tiene que implementar así que no la
usaremos.
Se puede elegir el tipo text/plain para una columna que contenga cualquier tipo de
texto; por ejemplo texto XHTML o XML.
Transformaciones navegador
Aquí es donde configuramos las transformaciones exactas que se producirán. Puede
ser que el tipo MIME no soporte más de una transformación; por ejemplo, para el
tipo image/jpeg tenemos dos transformaciones disponibles: Image/jpeg: Imagen en
línea para un icono de la imagen al que se puede hacer clic e imagen/jpeg: Enlace
para mostrar un enlace.
Como podemos ver en la siguiente imagen, mover el ratón sobre cada elección
del menú deplegable ofrece una pequeña explicación de la transformación
correspondiente. Hay disponible una Explicación más completa de las
transformaciones y las opciones posibles si hacemos clic en el enlace descripciones
de las transformaciones.
[ 213 ]
Transformaciones basadas en MIME
Algunas opciones tienen un valor por defecto y tenemos que tener cuidado en
respetar el orden documentado de las opciones. Por ejemplo, si hay dos opciones
y sólo queremos un valor específico de la segunda opción, podemos usar comillas
vacías como marcador de posición para la primera opción y dejar que el sistema use
su valor por defecto.
GD2
phpMyAdmin usa algunas funciones internas para generar iconos. Esas funciones
necesitan que la librería GD2 esté presente en nuestro servidor PHP.
Si sabemos que la librería GD2 esta disponible, podremos ejecutarla con más
rapidez si configuramos $cfg['GD2Available'] en yes. Si no está disponible, se
recomienda poner un no aquí.
Memoria
En algunos servidores PHP, el valor por defecto de memory_limit en php.ini es
8 MB. Este valor es demasiado bajo para manipular correctamente imágenes. Por
ejemplo, en un test, se necesitó un valor de 11 MB en memory_limit para generar el
icono de un JPEG de 300 KB.
[ 214 ]
Capítulo���
16
Ejemplos de transformaciones
Ahora discutiremos unos pocos ejemplos de transformación. Empezaremos por
cambiar el tipo de campo del campo foto_cubierta.
Aquí las opciones se presentan como anchura, altura. Si omitimos estas opciones,
los valores por defecto son 100, 100. El código de generación del icono preserva
el coeficiente de aspecto original de la imagen, por eso los valores escritos son la
anchura y la altura máximas de la imagen generada. Luego cargamos un archivo
.jpeg en una celda (con las instrucciones del capítulo 6). Como resultado obtenemos
lo siguiente en el modo Examinar de esta tabla:
Se puede hacer clic en este icono para ver la foto a tamaño real.
[ 215 ]
Transformaciones basadas en MIME
Para una imagen .png, tenemos que usar image/png como tipo MIME y image/png:
Inline como transformación.
Formatear datos
Tenemos un campo llamado fecha_publicación en nuestra tabla libros; asegurémonos
que su tipo es DATETIME. Luego configuramos este tipo MIME a text/plain y la
transformación del navegador text/plain: Dateformat. El siguiente paso es editar
la fila 'Recuerdos futuros' y escribir 01/01/2003 14:56:00 en el campo fecha_
publicación. Luego examinamos la tabla y vemos el campo formateado. Si movemos
el ratón sobre el campo veremos los contenidos originales sin formato:
Enlaces de texto
Supongamos que en nuestra tabla libros, tenemos que poner dentro del campo de
descripción una URL completa: http://domain.com/abc.pdf. El enlace del texto se
mostraría cuando examinásemos la tabla pero no podríamos hacer clic en él. Ahora
veremos el uso del tipo MIME text/plain en esta situación.
text/plain: link
En el escenario que acabamos de mencionar, si usamos un tipo MIME text/plain y
una transformación navegador text/plain: link, todavía podemos ver el texto del
enlace pero podremos hacer clic en él:
Si todos los documentos que queremos marcar están en un prefijo URL común,
podemos poner este prefijo (por ejemplo, http://domain.com/) en la primera
opción de transformación con comillas. Luego, en cada celda, solo pondremos la
última parte de la URL (abc.pdf).
[ 217 ]
Transformaciones basadas en MIME
En este ejemplo, los resultados son correctos. Sin embargo, otros datos HTML
escritos en el campo de datos pueden producir resultados sorprendentes (incluyendo
páginas HTML inválidas). Por ejemplo, ya que phpMyAdmin presenta los resultados
con tablas HTML, una tabla </table> sin escapar en el campo de datos arruinaría
los resultados.
[ 218 ]
Capítulo���
16
Aplicaciones externas
Las transformaciones que hemos descrito anteriormente se implementan
directamente en phpMyAdmin. Sin embargo, algunas transformaciones se hacen
mejor con aplicaciones externas existentes.
La transformación text/plain: external nos permite mandar datos de las celdas a otra
aplicación que se iniciará en nuestro servidor Web, capturar los resultados de esta
aplicación y mostrarlo en la posición de la celda.
Esta característica sólo esta soportada por un servidor Linux o UNIX (bajo Microsoft
Windows, el proceso PHP no puede capturar con facilidad el resultado y la
redirección). Además, PHP no debería funcionar en modo seguro, de lo contrario
esta característica puede que no esté disponible en algunos servidores proveídos.
Por razones de seguridad, la ruta exacta de la aplicación y su nombre no se pueden
configurar en phpMyAdmin como una opción de transformación. El nombre de la
aplicación se configura directamente en uno de los programas de phpMyAdmin.
Primero, en el directorio de instalación de phpMyAdmin, editamos el archivo text_
plain__external.inc.php en libraries/tranformations/ y encontramos la
siguiente sección.
$allowed_programs = array ();
$allowed_programs[0] = '/usr/local/bin/tidy';
$allowed_programs[1] = '/usr/local/bin/validate';
[ 219 ]
Transformaciones basadas en MIME
Cada programa permitido se tiene que describir aquí, con un número de índice
que empieza de 0 y su ruta completa. Luego guardamos las modificaciones de este
programa y las ponemos de nuevo en el servidor si es necesario. La configuración
que queda se completa en el mismo panel donde hemos elegido las opciones de
transformación del resto de transformaciones navegador.
Primero añadimos un campo TEXT a nuestra tabla libros: El campo palabras clave y
escribimos la información relacionada con MIME:
El '2' se refiere al número de índice de sort y el parámetro '-f' es para sort, lo que
hace que el programa clasifique los caracteres mayúsculas y minúsculas juntos en
lugar de clasificar las mayúsculas antes que las minúsculas.
Luego hacemos clic en Editar la fila del libro Cien años de cine (volumen 1), escribimos
algunas palabras clave en ningún orden particular y hacemos clic en Continuar
y grabar:
[ 220 ]
Capítulo���
16
Para verificar los efectos del programa externo, examinamos nuestra tabla y vemos
las palabras clave clasificadas en la celda:
Por supuesto, las palabras clave se ven clasificadas en esta celda, y la opción –f ha
puesto la mayúscula S de Smith en el orden correcto.
Resumen
En este capítulo hemos visto como podemos mejorar la navegación si
transformamos datos con diferentes métodos. Podemos:
[ 221 ]
Conjunto de caracteres y
colaciones
Este capítulo explica como phpMyAdmin almacenar y recoge nuestros datos, como
trabaja con las características conjunto de caracteres y colación que están disponibles
en MySQL. El comportamiento del programa depende de la versión de MySQL que
se usa.
El conjunto de caracteres que se usa para almacenar nuestros datos puede no ser el
mismo que se usa para mostrarlo, por lo que habrá discrepancias en los datos. De
modo, necesitamos transformar los datos.
Tenga en cuenta que el navegador tiene que soportar UTF_8 (la mayoría de los
navegadores actuales lo hacen). El kit de distribución de phpMyAdmin incluye una
versión UTF_8 de casi todos los archivos de idioma del subdirectorio lang, algunas
sólo están disponibles en UTF-8.
Conjunto de caracteres y colaciones
Codificación de datos
El servidor PHP tiene que soportar los módulos iconv o recode para codificar
datos. Si este no es el caso, se generara el siguiente mensaje de error:
[ 224 ]
Capítulo���
17
Conjunto de caracteres
Cuando consideremos las opciones disponibles, debemos entender que, cuando está
conectado a un servidor anterior a MySQL 4.1.x, phpMyAdmin tiene un soporte
limitado para convertir conjuntos de caracteres. Ahora podemos especificar que
conjunto de caracteres se aplica a una consulta y sus resultados. El conjunto de
caracteres que se usa por defecto está definido en el siguiente parámetro.
$cfg['DefaultCharset'] = 'iso-8859-1';
Esta es la única elección por defecto; los usuarios pueden elegir otro conjunto
de caracteres de la lista de elecciones de este parámetro (el parámetro actual de
config,inc.php tiene más):
$cfg['AvailableCharsets'] = array(
'iso-8859-1'
'iso-8859-2' 'iso-8859-3'
'iso-8859-4');
Estas elecciones se muestran a los usuarios en el mismo orden con el que las hemos
definido en el parámetro $cfg['AvailableCharsets'] . De modo que podemos
poner las elecciones más populares arriba. Se puede usar cualquier carácter
soportado por los motores de recodificación iconv o recode.
[ 225 ]
Conjunto de caracteres y colaciones
La opción Juego de caracteres MySQL aparece sólo si el idioma elegido usa una
codificación UTF-8. A partir de ahora, en cualquier comunicación que haya entre el
servidor Web y el servidor MySQL se usará este conjunto de caracteres MySQL.
El impacto de cambiar
Cuando elegimos un conjunto de caracteres, todos los datos almacenados en
MySQL se recodificaran con este conjunto de caracteres, de modo que obtendremos
resultados incorrecto cuando recuperemos lo datos si cambiamos el conjunto de
caracteres que usa phpMyAdmin. No hay una manera fácil de encontrar que conjunto
de caracteres se usó para almacenar una fila particular de datos.
Aquí hay un ejemplo con nuestra tabla autor. Primero creamos un autor nuevo con el
carácter é en su nombre:
[ 226 ]
Capítulo���
17
Aquí no hay problemas para insertar, navegar o buscar este autor nuevo ya que el
conjunto de caracteres elegido iso-8859-1 puede tratar el carácter é.
[ 227 ]
Conjunto de caracteres y colaciones
[ 228 ]
Capítulo���
17
Colaciones
Cuando se tienen que hacer comparaciones entre caracteres el sistema (MySQL en
este caso) tiene que seguir unas reglas precisas. Por ejemplo, ¿ 'A' es equivalente a 'a'?
¿Es 'André' equivalente a 'Andre'? Estas reglas se llaman colaciones.
Elegir una buena colación es importante para obtener los resultados que queremos
cuando buscamos datos, por ejemplo desde la página Buscar de phpMyAdmin.
Página de inicio
Así es como aparece la página de inicio cuando nos conectamos a un servidor
MySQL 4.1.x (las secciones que siguen muestran los cambios en detalle):
[ 229 ]
Conjunto de caracteres y colaciones
[ 230 ]
Capítulo���
17
[ 231 ]
Conjunto de caracteres y colaciones
[ 232 ]
Capítulo���
17
Vista tabla
En la vista tabla, en la sub-página Operación, podemos cambiar la información sobre
conjunto de caracteres y la colación por defecto (vea la muestra de pantalla que sigue):
[ 233 ]
Conjunto de caracteres y colaciones
Vista servidor
En la vista Servidor, podemos obtener estadísticas sobre las bases de datos (vaya a
la sección Información de las bases de datos, del capítulo 18). Cuando nuestro servidor
soporta conjuntos de caracteres y colaciones, vemos una columna de información
adicional, Colación, como en esta página:
Soporte Kanji
Si phpMyAdmin detecta el uso de japonés, chequea si PHP soporta la función
secuencias multi-byte mb_convert_encoding (). Si están disponibles, se presentan
botones de radio adicionales para elegir entre EUC-JP y codificaciones SJIS
japonesas en algunas páginas:
• Exportar
• Insertar texto de un archivo
• Recuadro consulta
[ 234 ]
Capítulo���
17
Resumen
En este capítulo hemos cubierto:
[ 235 ]
Administración del servidor
MySQL con phpMyAdmin
En este capítulo discutiremos como un administrador del sistema puede usar las
características de administración del servidor phpMyAdmin para mantener las
cuentas de usuario día a día, para verificar el servidor y para protegerlo.
Los enlaces superiores sólo son visibles si estamos conectados como usuario
privilegiado. Cuando estamos en la vista servidor, vemos un menú del resto de sub-
páginas relacionadas con el servidor.
Administración del servidor MySQL con phpMyAdmin
• Recargar los privilegios. Los privilegios efectivos (en los que el servidor
basa sus decisiones de acceso) están en la memoria del servidor. Las
modificaciones a los privilegios que se han creado en la interfaz de
phpMyAdmin se hacen en la memoria y el disco, en la base de datos mysql.
Las modificaciones que se hacen directamente en la base de datos mysql
no tiene efecto inmediato. La operación Recargar lee los privilegios de los
usuarios desde la base de datos y los hace efectivos en la memoria.
La lista de usuarios que se muestra tiene las siguientes características:
• Usuario: Los usuarios en orden alfabético.
• Proveedor: Aparece una definición del proveedor de ese usuario, el valor %
indica todos los proveedores. Es el nombre de la máquina o la dirección IP
desde la que el usuario se conecta al servidor MySQL.
• Contraseña: Tiene Yes si hay una contraseña definida y No si no la hay.
El valor de la contraseña no se puede ver en la interfaz de phpMyAdmin
o directamente mirando a la tabla mysql.user, ya que la contraseña está
ofuscada por un algoritmo de cálculo de una dirección.
• Privilegios globales: Se ve una lista de ellos para cada usuario.
• Otorgar: Contiene Yes si el usuario puede otorgar sus privilegios a otros.
Añadir un usuario
El enlace Añadir un usuario nuevo muestra un diálogo para crear una cuenta
de usuario:
[ 239 ]
Administración del servidor MySQL con phpMyAdmin
Proveedor
Por defecto, este menú está configurado Cualquier proveedor, con lo que usará el
valor % de proveedor. La elección Local quiere decir localhost. La elección Usar
tabla de proveedores (que crea un valor en blanco en el campo del proveedor) quiere
decir mirar en la tabla mysql.hosts para los privilegios específicos de la base de
datos. Usar campo texto nos permite escribir el valor exacto para el proveedor que
queremos. Elijamos Local.
Contraseña
A pesar que es posible crear un usuario sin contraseña (con la elección No contraseña),
es mejor tener una contraseña. Tenemos que escribirla dos veces (ya que no podemos
ver lo que hemos escrito) para confirmar la contraseña. Escribamos bingo.
Privilegios globales
Los privilegios globales gobiernan el acceso a todas las bases de datos de este
usuario, que también se llaman privilegios súper usuario. Un usuario normal no
debería tenerlos a no ser que haya buenas rezones.
[ 240 ]
Capítulo���
18
Editar un usuario
Esta página aparece después de crear un usuario, o cada vez que hagamos clic en
el enlace Editar de un usuario en la Información general del usuario. Hay cuatro
secciones en esta página, cada una con un botón Continuar distintivo, de modo que
cada sección se opera de manera independiente y tiene un propósito distintivo.
Editar privilegios
Esta sección tiene el mismo aspecto que el diálogo Añadir un nuevo usuario y se usa
para ver y cambiar los privilegios globales.
En esta sección definimos las bases de datos a las que el usuario tiene acceso y los
privilegios exactos. Ahora vemos None porque no hemos definido ninguna. Hay dos
maneras de definir los privilegios de las bases de datos. Primero, podemos elegir una
de las bases existentes del menú desplegable:
[ 241 ]
Administración del servidor MySQL con phpMyAdmin
Con esto le daremos privilegios para esta base de datos solamente. También
podemos elegir Usar el campo texto y escribir un nombre de base de datos. Podemos
escribir un nombre de una base de datos que no existe de modo que el usuario pueda
crearla más tarde (siempre que le demos permisos CREATE en el siguiente panel) o
podemos usar caracteres especiales como el subrayado y el símbolo del porcentaje
como comodines.
Por ejemplo, al escribir bill aquí permitiríamos a bill crear una base de datos y
escribir bill% permitiría la creación de cualquier base de datos que comience con
bill. Para nuestro ejemplo, escribiremos bill.
La siguiente pantalla se usa para configurar los privilegios de bill en la base de datos
bill y crear privilegios específicos de las tablas.
[ 242 ]
Capítulo���
18
Esto nos lleva de vuelta a la página inicial excepto por un cambio en una sección:
Vemos los privilegios existentes en la base de datos bill para el usuario bill (que
podemos Editar o Revocar) y podemos añadir privilegios para bill en otra base de
datos. También vemos que bill no tiene privilegios específicos de tabla en la base de
datos bill.
Cambiar la contraseña
Este diálogo forma parte de la página Editar usuario, podemos cambiar la contraseña
de bill o suprimirla, permitiendo que bill se conecte sin contraseña:
[ 243 ]
Administración del servidor MySQL con phpMyAdmin
Por ejemplo, supongamos que Bill nos llama y nos dice que prefiere que el nombre
de usuario sea billy en lugar de bill. Sólo tenemos que añadir una y al nombre de
usuario, elegir Local como proveedor y seleccionar Suprimir el antiguo de las tablas
de usuario:
[ 244 ]
Capítulo���
18
Después de esta operación, bill no existirá en la base de datos mysql y los privilegios
se transferirán a billy, incluyendo los privilegios de la base de datos bill. Pero
la definición del usuario bill todavía existe en la memoria y todavía es efectiva.
Si hubiésemos elegido la opción Suprimir el antiguo de las tablas de usuario y
recargar los privilegios más tarde en su lugar, la definición del usuario bill hubiese
dejado de ser válida de inmediato.
Eliminar un usuario
Esto se hace desde la sección Información general del usuario de la página
Privilegios. Seleccionamos el usuario que queremos suprimir y luego usamos una
de las siguientes opciones (en la sección Suprimir usuarios seleccionados) como sea
más apropiado:
También podemos elegir Vaciar la base de datos que tiene el mismo nombre que
el usuario.
[ 245 ]
Administración del servidor MySQL con phpMyAdmin
También vemos el enlace Activar estadísticas. Por defecto las estadísticas no están
activadas porque el tamaño de los datos y los índices para todas las tablas de todas las
bases de datos pueden costarle a MySQL recursos de servidor valiosos.
Clasificar estadísticas
Por defecto, la lista está clasificada por orden de nombre de base de datos
ascendiente. Si necesitamos encontrar la base de datos con más tablas, o la que ocupa
más espacio, con un simple clic en la columna Tablas o Total nos las clasifica de ese
modo. Un segundo clic cambia el orden de clasificación.
[ 246 ]
Capítulo���
18
[ 247 ]
Administración del servidor MySQL con phpMyAdmin
Esto está seguido por las estadísticas de cada comando MySQL, con el número
absoluto de veces, media por hora y el porcentaje del número total de comandos con
que se ejecutó un comando específico.
[ 248 ]
Capítulo���
18
Estado InnoDB
En los servidores que soportan InnoDB aparece un enlace al final de la página
Estado, que cuando se hace clic en él, da información sobre el subsistema InnoDB,
incluyendo el último error InnoDB que ha ocurrido.
[ 249 ]
Administración del servidor MySQL con phpMyAdmin
[ 250 ]
Capítulo���
18
En esta página vemos una lista de todos los procesos del servidor y un enlace Matar
que nos permite terminar un proceso específico.
El enlace Exportar nos manda a la página que se ve abajo, que tiene la misma
estructura que el resto de páginas de exportación, excepto por las lista de bases
de datos:
[ 251 ]
Administración del servidor MySQL con phpMyAdmin
Resumen
En este capítulo, hemos visto varias características disponibles para los
administradores del sistema:
[ 252 ]
Procedimiento para solucionar
anomalías y soporte
Este capítulo propone una guía para resolver los errores comunes y da pistas sobre
como evitar estos problemas. También explica como interactuar con el equipo de
desarrollo para soporte, informe de anomalías y contribuciones.
También podemos probar otros programas PHP que conectan con MySQL, para
ver si el problema es más general que tan sólo phpMyAdmin sin funcionar. Como
consejo general, deberíamos usar las últimas versiones estables de cada componente.
Configuración básica
Siempre deberíamos verificar dos veces como hemos hecho la instalación, incluyendo
los permisos adecuados y las titularidades. Puede haber errores tipográficos cuando
modificamos config.inc.php.
Las secciones Mensajes de error y otros problemas están basadas en los diferentes
mensajes que se han encontrado en el foro de ayuda de phpMyAdmin, también
son una explicación al material que se encuentra en la sección FAQ de
Documentation.html.
Mensajes de error
Esta sección se refiere a los mensajes de error explícitos, tal y como los muestra
phpMyAdmin.
[ 254 ]
Capítulo���
19
Sin embargo, para estar seguros, debemos encontrar la posición exacta de este socket.
[ 255 ]
Procedimiento para solucionar anomalías y soporte
Otros problemas
Aquí cubrimos soluciones a problemas que no aparecen en la pantalla como un
mensaje específico de error.
[ 257 ]
Procedimiento para solucionar anomalías y soporte
Si no estamos en un servidor proveído, este mensaje tan sólo refleja el hecho que no
tenemos el permiso global CREATE.
[ 258 ]
Capítulo���
19
Y
AddType application/x-httpd-php .php
[ 259 ]
Procedimiento para solucionar anomalías y soporte
Buscar soporte
El punto de inicio para el soporte es la página de inicio http://www.phpmyadmin.
net que tiene secciones sobre documentación y soporte (comentarios). Aquí
encontrará enlaces para los foros de discusión y algunos rastreadores como:
• Rastreador de errores.
• Rastreador de RFE (requested features o características pedidas).
• Rastreador de las traducciones.
• Rastreador de los parches.
• Rastreador del soporte.
FAQ
El archivo Documentation.html, que es parte del producto, contiene una larga
sección FAQ, con preguntas y respuestas numeradas. Se recomienda mirar la sección
FAQ como primer recurso de ayuda.
Foros de ayuda
El equipo de desarrollo le recomienda que primero use los foros del producto para
buscar el problema que tenga y luego empiece un foro nuevo de discusión antes de
escribir un informe de errores.
[ 260 ]
Capítulo���
19
Rastreador de soporte
Es otro lugar para pedir ayuda. Además, si hemos escrito un informe de errores,
que en realidad es una petición de soporte, el informe se moverá al rastreador de
soporte. Con su cuenta de usuario SourceForge, le notificarán del cualquier cambio
en el rastreador.
Rastreador de errores
En este rastreador vemos los errores que aún no se han corregido, más los errores
que se han corregido para la siguiente versión (es para evitar tener informes de
errores duplicados).
[ 261 ]
Procedimiento para solucionar anomalías y soporte
Algunas veces, puede ser útil adjuntar un pequeño fichero de explicación al informe
de errores para ayudar a los programadores a reproducir el problema. Las muestras
de pantalla son bienvenidas.
Contribuir al proyecto
Desde 1998, cientos de personas han contribuido a traducir, crear código para
nuevas características, sugestiones o arreglar errores.
El código base
El equipo de desarrollo mantiene un código en desarrollo desde el cual sacan
versiones nuevas de forma periódica. En la sección de descargas de la página de
inicio, un parágrafo describe como usar CVS para obtener la última versión en
desarrollo (también se puede hacer si descargamos el programa instantáneo CVS).
Se considerará con más prioridad (actualización de traducción, parche, nueva
característica) si se refiere al código base más nuevo y no a una versión antigua de
phpMyAdmin.
[ 262 ]
Capítulo���
19
Parches
El equipo de desarrollo puede administrar parches con más facilidad si los
mandamos en forma de context diff contra el código actual, con una explicación
del problema resuelto y la nueva característica que se ha conseguido. Se acredita
oficialmente a los contribuidores en Documentation.html por su trabajo.
Resumen
En este capítulo:
[ 263 ]
Indíce
Símbolos Autenticación
Autenticación HTTP 27
-with-bz2 compilador 110 Auto módulo, codificación de los datos 40,
-with-zlib compilador 110 224
A B
Actualización de los criterios, generación de Borrar bases de datos 83
consultas 183 Borrar datos 80
Administración del índice 62, 93 Botón mostrar todo, barra de navegación 70
Índices de campos múltiples 95 Búsqueda en la base de datos 138
Índices de un campo 94 Búsqueda en una tabla 131
Sentencia EXPLAIN 98 Búsqueda con comodines 134
Administración del servidor Campos mostrados, selección 132
Administración del estado general 248 Consulta por ejemplo, búsqueda con 133
Administración del estado InnoDB 249 Búsqueda de datos 131
Variables, servidor MySQL 250 Búsqueda de múltiples criterios, búsqueda
Verificación del estado 247 en tablas 136
Almacenamiento de la contraseña,
autenticación cookie 28
Añadir datos entre las tablas 146 C
Añadir la opción ‘drop table’, exportación de Campo Objeto Binario Extendido 89
la estructura 106 Campo TEXT 88
Añadir la opción valor AUTO Campos LONGTEXT 88
INCREMENT, exportación de la Características de la administración del
estructura 106 servidor 237
Añadir en la opción comentarios, estructura Cargar datos 121
exportación 106 Cerrar los nombres de una tabla y de los
Añadir un usuario Nuevo, diálogo 238 campos con la opción comillas,
Archivo php.ini 122 exportar la estructura 106
Arquitectura de las aplicaciones Web 7 Clave foránea 150
Atributo comentarios de la tabla 143 Cláusula WHERE, búsqueda en las
Atributos de los campos, edición, estructura tablas 137
de las tablas 87 Codificación de datos 224
Atributo orden de las tablas 144 Codificación de los datos 40, 224
Atributo tipo de tabla 143
Codificación EUC-JP, soporte Kanji Control de acceso basado en la IP,
234, 252 seguridad 30
Codificación SJIS, soporte Kanji 234, 252 Control user, autenticación 26
Colaciones 229 Cookie, autenticación 27
Columnas de criterio, ajustar el número Copia de seguridad, exportación de los
de 187 datos 101
Columnas de criterio, generación de Creación de base de datos
consultas 181 Restricciones, permisos 57
Comando SHOW PROCESSLIST, create_table.sql, archivo 151
administración del servidor 251
Comandos SQL, escribir
Consultas con múltiples sentencias 173
D
Edición de las consultas 172 Datos específicos del servidor, instalación
Vista base de datos 167 de phpMyAdmin 20
Vista tabla 168 dbbook, base de datos ejemplo 58
Comparación de formatos CSV y SQL, Crear la base de datos 60
importar datos 126 Diseño de la base de datos 60
Configuración auto_increment, opciones de Panel de entrada de los datos, ajuste de 65
tabla atributo 145 Discriminación entre mayúsculas y
Configuración básica, testeo de la 23 minúsculas 153
Configuración checksum, opciones de la Documentación
tabla atributo 145 Base de datos selectiva, vista impresión 202
Configuración delay_key_write, opciones de Diccionario de datos 203
la tabla atributo 145 Edición de páginas PDF 205
Configuración multi-servidor 23 Fuentes 210
Configuración pack_keys, opciones de la Generación de imágenes 214
tabla atributos 145 Tabla, vista impresión 203
Conjuntos de caracteres 225
Cambiar, vista base de datos 232 E
Cambiar, vista tabla 233
Colaciones 229 Editar páginas PDF, documentación
Conjunto efectivo 231 Crear páginas 206
Conjuntos disponibles 230 Diseñar páginas 205
Crear una base de datos 230 Editar páginas 206
Elegir 226 Mostrar páginas 207
Importar y exportar 227, 233 Editor HomeSite 18
Vista del servidor 234 Editor PHP 17
Conjunto de caracteres, exportar bases Editor PHPEdit 18
de datos Editor UltraEdit 17
Elegir un conjunto de caracteres efectivos Editor WordPad 17
226, 252 Esquema de codificación UTF-8 40, 223
Importar y exportar 227 Extensión multifunctional del correo en
Comparación de caracteres 229 Internet (MIME) 212
config.inc.php, archivo 18 Exportación de archivos divididos, exportar
Configurar servidores múltiples 24 la tablas 117
Contribuir al desarrollo de phpMyAdmin Exportación de datos 108
262 Exportación de la estructura 106
Exportación de la tabla 116
[ 266 ]
Exportar 101 I
Aspectos del rendimiento 108
Exportar bases de datos 251 Importar datos 121
Conjunto de caracteres 225, 252 Archivos CSV 126
Archivos SQL 123
Cargar interfaz 126
F Subir el directorio 129
Filas de criterio, ajustar el número 185 Volcados comprimidos 130
Formato LaTex, exportar datos 112 Índice FULLTEXT 96
Formato de datos CSV, exportar datos 110 Índice Fulltext 87
Formato SQL, exportar datos 103 Infraestructura de las tablas enlazadas
Formato SQL, sub-panel Exportar 103 Instalación de un usuario 154
Formato XML, exportar datos 114 Meta-datos 150
Foro de ayuda, soporte phpMyAdmin 260 Posición 150
Fuentes de errores 254 Vista relación 156
Fuentes de phpMyadmin, documentación Insertar datos de un textfile en el diálogo de
210 la taba, importar datos 127
Función mb_convert_encoding, soporte Instalación de phpMyAdmin
Kanji 234, 252 Instalación multi-usuario 25
Función mysql_query 173 Servidores locales, en 18
Función strftime, PHP 109 Instalación de la tabla multi-usuario 152
Funciones, disponibles para manipular Instalación de tabla de un usuario 154
datos 77 Integridad referencial 164
IUSR_machinename, servidor IIS 19
G
Generación de consultas, múltiples tablas
L
179 Límite del tamaño del fichero, importar
Generación de consultas multi-tabla datos 122
Actualizar consultas 182
Ejecución de la consulta 188 M
Joins automáticas de las tablas 187
Mostrar los resultados 182 Manipulación de datos 75
Selección de campos 181 Borrar tablas 82
Selección de tabla 180 Edición de filas múltiples 79
Prestación de clasificación 182 Filas, duplicar 78
Guardar archivo como sub-panel, exportar Filas múltiples 81
datos 109 Icono lápiz 75
Guardar archivo como sub-panel Tecla tab 76
Opciones de compresión 109 Todas las filas, tablas múltiples 82
Guardar los archivos de exportación en el Todas las tablas, una tabla 81
servidor 119 Una fila 80
Manipulación de la estructura de la tabla 85
Campo ENUM 91
H Campo SET 91
Historial de los comandos SQL Campos, añadir 85
Basado en la base de datos 171 Campos LONGTEXT 88
Basado en JavaScript 171 Optimización de las tablas 97
[ 267 ]
Modo vertical 86 Modo mínimo, panel de la izquierda 43
Mantenimiento de la tabla 142 Modo navegación, mostrar los resultados de
Marcadores la consulta 66
Almacenamiento 193 Barra de navegación 68
Características 191 Clasificación de los datos 70
Creación 192 Destacar los resultados 71
Consulta inicial por defecto 196 Longitud de la columna, limitar 72
Ejecución 195 Personalizar el aspecto 73
Manipulación 195 Modo vertical, barra de navegación 69
Marcadores multi-consulta 194 Módulo iconv, codificar datos 252
Marcadores parametrizados, crear 197 Módulo recodificar, codificación de los datos
Pasar, a marcadores 198 225, 252
Público 195 MySQL
Recuperar marcadores 194 Naturaleza relacional 149
Mensajes de error Soporte para exportar bases de datos 228,
Acceso denegado a MySQL 256 252
Caracteres raros 258 MySQL Said – acceso denegado, mensaje de
Error 404 – no se encuentra la página 257 error
Errores relacionados con BLOB 257 Mientras se usa la autenticación config 256
Hay problemas en la transmisión de la Mientras se usa la autenticación HTTP 256
contraseña 256 MySQL-webadmin 10
IIS – no hay un fichero de entrada mysqldump, exportar datos 101
especificado 257
La ventana de autenticación aparece más de
una vez 259
O
MySQL Said- error 127, se tiene que reparar Omisión de bases de datos, privilegios de
la tabla 257 las bases de datos 247
MySQL Said – no se puede conectar al Operación comprobar la tabla,
servidor local MySQL 255 mantenimiento de la tabla 142
Nombres de campos duplicados 259 Operación limpiar la tabla, mantenimiento
No se puede añadir información de de la tabla 142
cabecera, alarma 256 Operación mover, tablas 145
No se puede almacenar un valor mayor que Operación copiar, tablas 146
127 260 Operación de tabla analizar, mantenimiento
No se puede cargar la extensión MySQL 255 de la tabla 142
No se puede crear una base de datos 258 Operación renombrar, tablas 145
phpMyAdmin ha cambiado el tamaño de la Operación reparar la tabla, mantenimiento
columna 259 de la tabla 142
Problemas cargando BLOBs grandes 258 Operación volver a cargar, sub-página
Se ha perdido la contraseña root de privilegios 239
MySQL 258 Operaciones multi-tabla 147
Ver muchas bases de datos que no son Operaciones de la tabla 141
nuestras 260 Operadores lógicos, que se usan en la
Menú número de página, barra de búsqueda 137
navegación 69 Opción campos cerrados por, formato de
Meta-datos 149 datos CSV 111
Transformaciones, usados para las 211
[ 268 ]
Opción campos escapados por, formato de Parámetro upload_max_filesize, php.ini 122
datos CSV 111 Parámetros de configuración
Opción campos terminados por, formato de $cfg[‘AllowAnywhereRecording’] 40, 224
datos CSV 111 $cfg[‘AllowArbitraryServer’] 24
Opción comentarios, formato LaTex 113 $cfg[‘AllowUserDropDatabase’] 83
Opción complete inserts, exportar datos 108 $cfg[‘AvailableCharsets’] 225, 252
Opción datos, formato LaTex 112 $cfg[‘BgcolorTwo’] 73
Opción estructura, formato LaTex 112 $cfg[‘Border’] 73
Opción extended inserts, exportar datos 108 $cfg[‘BrowseMarkerColor’] 71, 231
Opción incluir comentarios de tabla, $cfg[‘BrowsePointerColor’] 71
formato LaTex 112 $cfg[‘BZipDump’] 110
Opción INSERT, formato SQL, exporter $cfg[‘CharEditing’] 65
datos 105 $cfg[‘CharTextareaCols’] 65
Opción línea terminada por, formato $cfg[‘CompressOnFly’] 110
CSV 111 $cfg[‘Confirm’] 80
Opción ON DELETE CASCADE, vista $cfg[‘DefaultLang’] 38
relación 161 $cfg[‘DefaultPropDisplay’] 86
Opción ON DELETE, vista relación 160 $cfg[‘DefaultQueryDatabase’] 167
Opción ON UPDATE, vista relación 160 $cfg[‘DefaultQueryTable’] 169
Opción poner nombres de campos en la $cfg[‘DefaultTabDatabase’] 51
primera fila, formato de datos $cfg[‘DefaultTabServer’] 53
CSV 111 $cfg[‘DefaultTabTable’] 52
Opción reemplazar Nulo por, formato de $cfg[‘ExecTimeLimit’] 122
datos CSV 111 $cfg[‘Export’] 103
Opción relaciones, formato LaTex 113 $cfg[‘Export’][format’] 103
Opción tipo MIME, formato LaTex 113 $cfg[‘IgnoreMultiSubmitErrors’] 173
Opción título de tabla, formato LaTex 112 $cfg[‘Lang’] 39
Opciones de compresión, exportar datos 110 $cfg[‘LeftBgColor’] 42
Opciones de transformación 213 $cfg[‘LeftDisplayLogo’] 41
Optimizar las operaciones de la tabla, $cfg[‘LeftDisplayServers’] 41, 48
mantenimiento de la tabla 142 $cfg[‘LeftFrameLight’] 43
$cfg[‘LeftFrameTableLevel’] 47
$cfg[‘LeftFrameTableSeparator’] 47
P $cfg[‘LeftPointerColor’] 42
Página de inicio, panel de la derecha 49 $cfg[‘LeftWidth’] 42
Página Personal Inicial (PHP) 8 $cfg[‘LimitChars’] 72, 219
Panel de la derecha, interfaz phpMyAdmin $cfg[‘LoginCookieRecall’] 29
35, 49 $cfg[‘LongTextDoubleTextarea’] 88
Página inicial 49 $cfg[‘MaxRowss’] 69
Vista base de datos 50 $cfg[‘ModifyDeleteAtLeft’] 75
Vista tabla 52 $cfg[‘MySQLManualBase’] 55
Panel de la izquierda, interfaz $cfg[‘NavigationBarIconic’] 69
phpMyAdmin 35 $cfg[‘OBGzip’] 258
Modo completo 45 $cfg[‘PersistentConnections’] 21
Presentación jerárquica de las tablas en la $cfg[‘PmaAbsoluteUri’] 20, 259
base de datos 46 $cfg[‘PmaAbsoluteUri_DisableWarning’] 20
Parámetro memory_limit, php.ini 122 $cfg[‘PropertiesIconic’] 75, 87
[ 269 ]
$cfg[‘ProtectBinary’] 90 phpMyAdmin
$cfg[‘QueryFrame’] 54 Administración del servidor 247
$cfg[‘QueryFrameJS’] 54, 171 Características 13
$cfg[‘QueryHistoryDB’] 171 Configuración básica 19
$cfg[‘QueryHistoryMax’] 172 Detección de errores 254
$cfg[‘QueryWindowDefTab’] 171 Diálogo quitar los usuarios elegidos 238
$cfg[‘QueryWindowHeight’] 55 Editar privilegios 241
$cfg[‘QueryWindowWidth’] 55 Información prerrequerida (necesaria) 15
$cfg[‘RecordingEngine’] 40, 224 Integridad referencia, falta de verificación
$cfg[‘RepeatCells’] 73 automática 150
$cfg[‘RestrictColumnTypes’] 77 Interfaz 35
$cfg[‘RestrictFunctions’] 77 Meta-datos, actualizaciones automáticas
$cfg[‘RightBgColor’] 49 de 165
$cfg[‘RightBgImage’] 49 Requisitos del sistema 253
$cfg[‘SaveDir’] 120 Panel de conexión 35
$cfg[‘Servers’][$i][‘AllowDeny’][‘order’] 31 Parámetro PmaAbsoluteURI 20
$cfg[‘Servers’][$i][‘AllowDeny’][‘rules’] 31 Perspectiva histórica 10
$cfg[‘Servers’][$i][‘auth_type’] 27 Privilegios específicos de las bases de
$cfg[‘Servers’][$i][‘blowfish_secret’] 28 datos 241
$cfg[‘Servers’][$i][‘controluser’] 26 Privilegios del usuario 240
$cfg[‘Servers’][$i][‘history’] 172 Seguridad 21
$cfg[‘Servers’][$i][‘only_db’] 32 Soporte 260
$cfg[‘Servers’][$i][‘port’] 21 Vista relaciones internas 156
$cfg[‘Servers’][$i][‘socket’] 21 pma_bookmark 198
$cfg[‘Servers’][$i][‘user’] 23 Poblar tablas manualmente, base de datos
$cfg[‘Servers’][$i][‘verbose’] 21 de ejemplo 63
$cfg[‘Servers’][$i]][‘verbose_check’] 154 PowerArchiver 16
$cfg[‘Servers’][$i]][controlpass’] 154 Posición del diálogo archivo de texto,
$cfg[‘Servers’][$i]][controluser’] 154 importar datos 123
$cfg[‘ServersDefault’] 24 Privilegio CREATE, creación de bases de
$cfg[‘ShowAll’] 69 datos 57
$cfg[‘ShowBlob’] 89 Privilegios específicos de la base de datos
$cfg[‘ShowChgPassword’] 50 Activar estadísticas 246
$cfg[‘ShowFunctionFields’] 77, 78 Clasificar estadísticas 246
$cfg[‘ShowSQL’] 59 Privilegios del usuario
$cfg[‘ShowStats’] 50 Añadir un usuario 239
$cfg[‘SQLQuery’][‘Validate’] 176 Borrar un usuario 245
$cfg[‘SQLValidator’][‘username’] 176 Editar los privilegios del usuario 241
$cfg[‘SQP’][‘fmtColor’] 174 Problemas de enchufe (socket) 255
$cfg[‘SQP’][‘fmtType’] 174 Problema de transmisión correcta,
$cfg[‘TextareaAutoSelect’] 169 Windows 255
$cfg[‘TextareaCols’] 88 Protección a nivel del directorio,
$cfg[‘ThBgColor’] 73 seguridad 29
$cfg[‘VerboseMultiSubmit’] 173 Protección de los datos en tránsito,
$cfg[ShowTooltipAliasDB] 143 seguridad 32
$cfg[ShowTooltipAliasTB] 143
[ 270 ]
R índice 96
Tiempo límite de ejecución, importar datos
Rastreador de errores, soporte de 122
phpMyAdmin 262 Tipo de autenticación config 22
Recuadro de consultas, escribiendo Tipo de tabla InnoDB 150
comandos SQL 167 Definir las relaciones 158
Recuadros Null de columna, manipulación Índice FULLTEXT, soporte para 158
de datos 76 Transformación
Referencias a sitios Web Aplicaciones externas 219
mysql.com 55 Clasificación en las celdas, aplicación
Reglas, acceso de control basado en la IP 30 externa 220
Relaciones definidas, tablas enlazadas, Conservar el formato 218
ventajas 162 Enlaces a imágenes, ofrecer 216
Relaciones, tablas 149 Enlaces del texto, ofrecer 217
Relaciones de las tablas Formato de los datos 216
Esquema relacional, documento PDF 204 MIME 212
Restricción de la base de datos, seguridad 32 Mostrar partes del texto 219
Navegador 212
S Pestaña en la que se puede hacer clic 215
Transformaciones del navegador 213
Seguridad
Transformaciones basadas en MIME 211
Instalación de phpMyAdmin 29
características de phpMyAdmin 212
Selector de idioma, panel de acceso 35, 38
Sentencia CREATE TABLE 124
Sentencia DROP TABLE IF EXISTS 106 V
Sentencia INSERT 124 Validador SQL 175
Sentencia LOAD DATA INFILE, importar Configuración 176
datos 121 Consultas no conformes con el estándar 178
Sentencia LOAD DATA LOCAL INFILE, Consultas conformes con el estándar 176
importar datos 126 Informes 176
Servidor Windows local, instalación en 18 Requisitos del sistema 176
Sincronización de consultas 171 Ventana de consulta, escribiendo comandos
Solución de las anomalías 25 SQL 170
Soporte Kanji, exportar bases de datos, Ventana de consulta, interfaz phpMyAdmin
idioma japonés 234, 252 36, 54
Sub-página operaciones, operaciones de la Vista base de datos
tabla 141, 158 Característica consulta por ejemplo (CPE)
Sub-página procesos 179
Administración del servidor 251 Consultas multi-tabla 179
Sub-panel exportar 103 Vista base de datos, panel de la derecha 36
Sub-panel opciones SQL, exportar datos 105 Vista impresión, búsqueda en las tablas 134
Sub-página estructura 51 Vista relación, tablas enlazadas 156, 159
Característica comentarios en la columna 165
T Definición del campo mostrar 157
Definición de las relaciones 157
Tablas enlazadas 150
Vista servidor, panel de la derecha 53
Marcadores 191
Volcado, exportar datos 101
Tablas MyISAM , administración del
[ 271 ]