Tabla de contenidos
Hay muchos programas clientes MySQL distintos que conectan con el servidor para acceder a la base de datos o realizar tareas administrativas. Existen también otras utilidades, que no comunican con el servidor, pero que realizan operaciones relacionadas con MySQL.
Este capítulo proporciona un breve resumen de estos programas y luego una descripción más detallada de cada uno. La descripción indica cómo invocar cada programa y las opciones que entiende. Consulte Capítulo 4, Usar los programas MySQL para información general sobre la invocación de los programas y sus opciones específicas.
La siguiente lista describe brevemente los programas clientes y las utilidades MySQL:
myisampack
Utilidad que comprime tablas MyISAM para
producir tablas más pequeñas de sólo lectura. Consulte
Sección 8.2, “myisampack, el generador de tablas comprimidas de sólo lectura de MySQL”.
mysql
La herramienta de línea de comando para introducir comandos SQL interactivamente o ejecutarlos desde un fichero en modo batch. Consulte Sección 8.3, “La herramienta intérprete de comandos mysql”.
mysqlaccess
Script que verifica los permisos de acceso para una combinación de máquina, usuario y base de datos.
mysqladmin
Cliente que realiza tareas administrativas, tales como crear y borrar bases de datos, recargar las tablas de permisos, volcar tablas a disco y reabrir ficheros de log. mysqladmin también puede utilizarse para consultar la versión, información de procesos, e información de estado del servidor. Consulte Sección 8.4, “Administrar un servidor MySQL con mysqladmin”.
mysqlbinlog
Utilidad para leer comados de un log binario. El log de comandos ejecutados contenidos en el fichero de log binario puede utilizarse para ayudar en la recuperación de una fallida. Consulte Sección 8.5, “La utilidad mysqlbinlog para registros binarios”.
MySQL AB proporciona tres programas con interfícies gráficas para usar con el servidor MySQL:
MySQL Administrator: Esta herramienta se usa para administrar servidores MySQL, bases de datos, tablas y usuarios.
MySQL Query Browser: MySQL AB proporciona esta herramienta gráfica para crear, ejecutar y optimizar consultas en bases de datos MySQL.
MySQL Migration Toolkit: Esta herramienta ayuda en la migración de esquemas y datos de otros sistemas de gestión de bases de datos realcionales a MySQL.
mysqlcheck
Cliente de mantenimiento de tablas que verifica, repara, analiza y optimiza tablas. Consulte Sección 8.6, “El programa mysqlcheck para mantener y reparar tablas”.
mysqldump
Cliente que vuelca una base de datos MySQL en un fichero como comandos SQL o como ficheros separados por tabuladores. Originalmente fue creado como freeware por Igor Romanenko. Consulte Sección 8.7, “El programa de copia de seguridad de base de datos mysqldump”.
mysqlhotcopy
Utilidad que realiza copias de seguridad rápidas de tablas
MyISAM o ISAM mientras
el servidor está en ejecución .Consulte
Sección 8.8, “El programa de copias de seguridad de base de datos mysqlhotcopy”.
mysqlimport
Cliente que importa ficheros de texto en sus respectivas
tablas usando LOAD DATA INFILE. Consulte
Sección 8.9, “El programa para importar datos mysqlimport”.
mysqlshow
Cliente que muestra información de bases de datos, tablas, columnas, e índices. Consulte Sección 8.10, “Mostrar bases de datos, tablas y columnas con mysqlshow”.
perror
Utilidad que muestra el significado de los errores de sistema de MySQL. Consulte Sección 8.11, “perror, explicación de códigos de error”.
replace
Programa que cambia cadenas de caracteres en ficheros o en la entrada estándar. Consulte Sección 8.12, “La utilidad replace de cambio de cadenas de caracteres”.
Cada programa MySQL tienen varias opciones, pero todos ellos
proporcionan una opción --help que puede
utilizarse para obtener una descripción completa de las distintas
opciones del programa. Por ejemplo, mysql
--help.
Los clientes MySQL que comunican con el servidor usando la
biblioteca mysqlclient usan las siguientes
variables de entorno:
MYSQL_UNIX_PORT | El fichero socket de Unix; se utiliza para conexiones al
localhost |
MYSQL_TCP_PORT | Puerto por defecto; se utiliza para conexiones TCP/IP |
MYSQL_PWD | Contraseña por defecto |
MYSQL_DEBUG | Opciones de traza para depurar código |
TMPDIR | Directorio donde se crean las tablas y ficheros temporales |
El uso de MYSQL_PWD no es seguro. Consulte
Sección 5.7.6, “Guardar una contraseña de forma segura”.
Puede cambiar las opciones por defecto o valores especificados en las variables de entorno para todos los programas estándar, especificando las opciones en un fichero de opciones o en la línea de comandos. Sección 4.3, “Especificar opciones de programa”.
La utilidad myisampack comprime tablas
MyISAM . myisampack funciona
comprimiendo cada columna de la tabla separadamente. Normalmente,
myisampack comprime el fichero de datos un
40%-70%.
Cuando la tabla se utiliza posteriormente, el servidor lee en la memoria la información que se necesita para descomprimir las columnas. Esto da un rendimiento mucho mejor al acceder a registros individuales, ya que sólo se tiene que descomprimir un registro.
Siempre que es posible, MySQL utiliza mmap()
para realizar operaciones de mapeo en memoria de tablas
comprimidas. Si mmap() no funciona, MySQL
vuelve a operaciones normales de escritura/lectura en ficheros.
Tenga en cuenta lo siguiente:
Si el servidor mysqld se invoca con la
opción --skip-external-locking, no es buena
idea invocar myisampack si la tabla tiene
que actualizarse durante el proceso de compresión.
Tras su compresión, una tabla será de sólo lectura. Esto, normalmente, es lo deseable (como cuando se accede a tablas comprimidas en un CD). Permitir escrituras en tablas comprimidas está en nuestra lista de cosas pendientes, pero con poca prioridad.
myisampack comprime columnas
BLOB o TEXT . El antiguo
programa pack_isam para tablas
ISAM no puede.
Invoque myisampack de la siguiente forma:
shell> myisampack [opciones]nombre_fichero...
Cada nombre de fichero debe ser el nombre de un fichero índice
(.MYI) . Si no se encuentra en el directorio
de la base de datos, debe especificar la ruta al fichero. Se
permite omitir la extensión .MYI .
myisampack soporta las siguientes opciones:
--help, -?
Muestra mensaje de ayuda y acaba.
--backup, -b
Realiza una copia de seguridad de los datos de la tabla usando
el nombre
.
nombre_tabla.OLD
--debug[=,
opciones_de_depuración]-#
[
opciones_de_depuración]
Escribe un log de depuración. La cadena de caracteres
opciones_de_depuración a menudo es
'd:t:o,.
nombre_fichero'
--force, -f
Crea una tabla comprimida incluso si llega a ser mayor que la
original o si el fichero temporal de una invocación anterior
de myisampack ya existe.
(myisampack crea un fichero temporal
llamado
cuando comprime la tabla. Si se mata
myisampack, el fichero
nombre_tabla.TMD.TMD puede no borrarse.) Normalmente,
myisampack acaba con un error si encuentra
que
existe. Con nombre_tabla.TMD--force, se fuerza
myisampack a comprimir la tabla.
--join=,
nombre_de_tabla_grande-j
nombre_de_tabla_grande
Junta todas las tablas nombradas en la línea de comandos en
una única tabla
nombre_de_tabla_grande. Todas las
tablas que hay que combinar deben tener
una estructura idéntica (los mismos nombres de columna y
tipos, los mismos índices, etc).
--packlength=,
#-p
#
Especifica el tamaño de almacenamiento del registro, en bytes. El valor debe ser 1, 2, o 3. myisampack almacena todos los registros con punteros de 1, 2, o 3 bytes. En la mayoría de casos normales, myisampack puede determinar el valor de longitud óptimo antes de empezar a comprimir el fichero, pero puede darse cuenta durante el proceso de compresión de que podría haber usado una longitud inferior. En ese caso, myisampack muestra una nota diciendo que en la siguente compresión del mismo fichero, puede usarse una longitud de fichero inferior.
--silent, -s
Modo silencioso. Sólo muestra mensajes de error.
--test, -t
No comprime la tabla, sólo prueba la compresión.
--tmpdir=,
ruta-T
ruta
myisampack crea en ese directorio los ficheros temporales.
--verbose, -v
Modo explícito. Muestra información sobre el proceso de compresión y su resultado.
--version, -V
Muestra información de la versión y sale.
--wait, -w
Espera y vuelve a empezar si la tabla está en uso. Si el
servidor mysqld se invocó con la opción
--skip-external-locking, no es buena idea
invocar myisampack si existe la posibilidad
que el servidor actualice la tabla durante el proceso de
compresión.
La siguiente secuencia de comandos ilustra una típica sesión de compresión de tablas:
shell> ls -l station.* -rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell> myisamchk -dvv station MyISAM file: station Isam-version: 2 Creation time: 1996-03-13 10:08:58 Recover time: 1997-02-02 3:06:43 Data records: 1192 Deleted blocks: 0 Datafile parts: 1192 Deleted data: 0 Datafile pointer (bytes): 2 Keyfile pointer (bytes): 2 Max datafile length: 54657023 Max keyfile length: 33554431 Recordlength: 834 Record format: Fixed length table description: Key Start Len Index Type Root Blocksize Rec/key 1 2 4 unique unsigned long 1024 1024 1 2 32 30 multip. text 10240 1024 1 Field Start Length Type 1 1 1 2 2 4 3 6 4 4 10 1 5 11 20 6 31 1 7 32 30 8 62 35 9 97 35 10 132 35 11 167 4 12 171 16 13 187 35 14 222 4 15 226 16 16 242 20 17 262 20 18 282 20 19 302 30 20 332 4 21 336 4 22 340 1 23 341 8 24 349 8 25 357 8 26 365 2 27 367 2 28 369 4 29 373 4 30 377 1 31 378 2 32 380 8 33 388 4 34 392 4 35 396 4 36 400 4 37 404 1 38 405 4 39 409 4 40 413 4 41 417 4 42 421 4 43 425 4 44 429 20 45 449 30 46 479 1 47 480 1 48 481 79 49 560 79 50 639 79 51 718 79 52 797 8 53 805 1 54 806 1 55 807 20 56 827 4 57 831 4 shell> myisampack station.MYI Compressing station.MYI: (1192 records) - Calculating statistics normal: 20 empty-space: 16 empty-zero: 12 empty-fill: 11 pre-space: 0 end-space: 12 table-lookups: 5 zero: 7 Original trees: 57 After join: 17 - Compressing file 87.14% Remember to run myisamchk -rq on compressed tables shell> ls -l station.* -rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell> myisamchk -dvv station MyISAM file: station Isam-version: 2 Creation time: 1996-03-13 10:08:58 Recover time: 1997-04-17 19:04:26 Data records: 1192 Deleted blocks: 0 Datafile parts: 1192 Deleted data: 0 Datafile pointer (bytes): 3 Keyfile pointer (bytes): 1 Max datafile length: 16777215 Max keyfile length: 131071 Recordlength: 834 Record format: Compressed table description: Key Start Len Index Type Root Blocksize Rec/key 1 2 4 unique unsigned long 10240 1024 1 2 32 30 multip. text 54272 1024 1 Field Start Length Type Huff tree Bits 1 1 1 constant 1 0 2 2 4 zerofill(1) 2 9 3 6 4 no zeros, zerofill(1) 2 9 4 10 1 3 9 5 11 20 table-lookup 4 0 6 31 1 3 9 7 32 30 no endspace, not_always 5 9 8 62 35 no endspace, not_always, no empty 6 9 9 97 35 no empty 7 9 10 132 35 no endspace, not_always, no empty 6 9 11 167 4 zerofill(1) 2 9 12 171 16 no endspace, not_always, no empty 5 9 13 187 35 no endspace, not_always, no empty 6 9 14 222 4 zerofill(1) 2 9 15 226 16 no endspace, not_always, no empty 5 9 16 242 20 no endspace, not_always 8 9 17 262 20 no endspace, no empty 8 9 18 282 20 no endspace, no empty 5 9 19 302 30 no endspace, no empty 6 9 20 332 4 always zero 2 9 21 336 4 always zero 2 9 22 340 1 3 9 23 341 8 table-lookup 9 0 24 349 8 table-lookup 10 0 25 357 8 always zero 2 9 26 365 2 2 9 27 367 2 no zeros, zerofill(1) 2 9 28 369 4 no zeros, zerofill(1) 2 9 29 373 4 table-lookup 11 0 30 377 1 3 9 31 378 2 no zeros, zerofill(1) 2 9 32 380 8 no zeros 2 9 33 388 4 always zero 2 9 34 392 4 table-lookup 12 0 35 396 4 no zeros, zerofill(1) 13 9 36 400 4 no zeros, zerofill(1) 2 9 37 404 1 2 9 38 405 4 no zeros 2 9 39 409 4 always zero 2 9 40 413 4 no zeros 2 9 41 417 4 always zero 2 9 42 421 4 no zeros 2 9 43 425 4 always zero 2 9 44 429 20 no empty 3 9 45 449 30 no empty 3 9 46 479 1 14 4 47 480 1 14 4 48 481 79 no endspace, no empty 15 9 49 560 79 no empty 2 9 50 639 79 no empty 2 9 51 718 79 no endspace 16 9 52 797 8 no empty 2 9 53 805 1 17 1 54 806 1 3 9 55 807 20 no empty 3 9 56 827 4 no zeros, zerofill(2) 2 9 57 831 4 no zeros, zerofill(1) 2 9
myisampack muestra la siguiente información:
normal
Número de columnas para el que no se necesita compresión extra.
empty-space
Número de columnas que contienen valores que son sólo espacios, que ocupan un bit.
empty-zero
Número de columnas que contienen valores que son sólo ceros binarios; ocupan un bit.
empty-fill
Número de columnas de tipo entero que no ocupan el rango
completo de bytes de su tipo; se cambian a un tipo inferior.
Por ejemplo, una columna BIGINT (ocho
bytes) puede almacenarse como una columna
TINYINT (un byte) si todos sus valores
están en el rango de -128 a
127.
pre-space
Número de columnas decimales que se almacenan con espacios iniciales. En este caso, cada valor contiene un contador para el número de espacios precedentes.
end-space
Número de columnas que tienen muchos espacios al final. En este caso, cada valor contiene un contador para el número de espacios al final.
table-lookup
La columna tiene pocos valores distintos, que se convierten a
ENUM antes de la compresión Huffman.
zero
Número de columnas cuyos valores son todos cero.
Original trees
Número inicial de árboles Huffman.
After join
Número de árboles Huffman distintos que quedan tras unir árboles para tener algún espacio de cabecera.
Tras comprimir una tabla, myisamchk -dvv muestra información adicional acerca de cada columna:
Type
El tipo de la columna. El valor puede contener cualquiera de los siguientes descriptores:
constant
Todos los registros tienen el mismo valor.
no endspace
No guarda el espacio final.
no endspace, not_always
No guarda el espacio final y no realiza compresión en caso de que haya espacio final en todos los valores.
no endspace, no empty
No guarda el espacio final. No guarda valores vacíos.
table-lookup
La columna se convirtió a ENUM.
zerofill(
n)
Los n bytes más significativos
en el valor son siempre 0 y no se guardan.
no zeros
No almacena ceros.
always zero
Los valores cero se guardan usando un bit.
Huff tree
Número de árboles Huffman asociados con cada columna.
Bits
Número de bits usados en el árbol Huffman.
Tras ejecutar myisampack, es necesario lanzar myisamchk para volver a crear algunos índices. Al mismo tiempo, se puede ordenar los bloques de índices y crear estadísticas, que el optimizador MySQL necesita para trabajar de forma más eficiente:
shell> myisamchk -rq --sort-index --analyze nombre_de_tabla.MYI
Una vez instalada la tabla comprimida en el directorio de la base de datos MySQL, debe ejecutar mysqladmin flush-tables para forzar mysqld a comenzar a usar la nueva tabla.
Para descomprimir una tabla comprimida, use la opción
--unpack con myisamchk o
isamchk.
mysql es un simple shell SQL (con capacidades
GNU readline). Soporta uso interactivo y no
interactivo. Cuando se usa interactivamente, los resultados de las
consultas se muestran en formato de tabla ASCII. Cuando se usa no
interactivamente (por ejemplo, como filtro), el resultado se
presenta en formato separado por tabuladores. El formato de salida
puede cambiarse usando opciones de línea de comandos.
Si tiene problemas relacionados con memoria insuficiente para
conjuntos de resultados grandes, utilice la opción
--quick. Esto fuerza mysql a
devolver los resultados desde el servidor registro a registro en
lugar de recibir todo el conjunto de resultados y almacenarlo en
memoria antes de mostrarlo. Esto se hace usando
mysql_use_result() en lugar de
mysql_store_result() para recibir el conjunto
de resultados.
Usar mysql es muy sencillo. Invóquelo desde el prompt de su intérprete de comandos como se muestra a continuación:
shell> mysql nombre_base_de_datos
O:
shell> mysql --user=nombre_usuario--password=contraseñanombre_base_de_datos
Cuando introduzca un comando SQL, acábelo con
';', \g, o
\G y pulse Enter.
Puede ejecutar un script simplemente así:
shell> mysqlnombre_base_de_datos<script.sql>output.tab
mysql soporta las siguientes opciones:
--help, -?
Muestra el mensaje de ayuda y sale.
--batch, -B
Muestra los resultados usando tabuladores como separadores de columnas, con cada registro en una nueva línea. Con esta opción mysql no usa el fichero de historial.
--character-sets-dir=
ruta
Directorio donde los conjuntos de caracteres están instalados. Consulte Sección 5.9.1, “El conjunto de caracteres utilizado para datos y ordenación”.
--compress, -C
Comprime toda la información enviada entre el cliente y el servidor si ambos soportan compresión.
--database=,
nombre_base_de_datos-D
nombre_base_de_datos
La base de datos a usar. Esto es útil sobretodo en un fichero de opciones.
--debug[=,
opciones_de_depuración]-#
[
opciones_de_depuración]
Escribe un log de depuración. La cadena de caracteres
opciones_de_depuración a menudo es
'd:t:o,.
Por defecto es nombre_de_fichero''d:t:o,/tmp/mysql.trace'.
--debug-info, -T
Muestra alguna información de depuración al salir del programa.
--default-character-set=
conjunto de
caracteres
Usa conjunto de caracteres como
conjunto de caracteres por defecto. Consulte
Sección 5.9.1, “El conjunto de caracteres utilizado para datos y ordenación”.
--execute=,
comando-e
comando
Ejecuta el comando y sale. El formato de salida por defecto es
como el producido con --batch. Consulte
Sección 4.3.1, “Usar opciones en la línea de comandos” para algunos ejemplos.
--force, -f
Continua incluso si ocurre un error SQL.
--host=,
nombre_equipo-h
nombre_equipo
Conecta al servidor MySQL en el equipo especificado.
--html, -H
Produce la salida en HTML.
--ignore-space, -i
Ignora espacios tras los nombres de funciones. El efecto de
esta opción se describe en la discusión para
IGNORE_SPACE en
Sección 5.3.2, “El modo SQL del servidor”.
--local-infile[={0|1}]
Activa o desactiva la función LOCAL para
LOAD DATA INFILE. Sin valor, la opción
activa LOCAL. Puede darse como
--local-infile=0 o
--local-infile=1 para desactivar
explícitamente o activar LOCAL. Activar
LOCAL no tiene efecto si el servidor no lo
soporta.
--named-commands, -G
Los comandos con nombre están activados
por defecto. Se permite comandos con formato largo así como
comandos abreviados con \*. Por ejemplo, se reconoce tanto
quit como \q .
--no-auto-rehash, -A
No hay un recálculo del hash (rehashing) automático. Esta
opción hace que mysql arranque más
rápido, pero debe realizar el comando
rehash si quiere usar el completado
automático de tabla y columna.
--no-beep, -b
No hace ningún sonido cuando ocurre un error.
--no-named-commands, -g
Desactiva los comandos con nombre. Use la forma
\* únicamente, o use comandos con nombre
sólo al comienzo de una línea, acabando con punto y coma
(';'). Desde MySQL 3.23.22,
mysql arranca con esta opción
activada por defecto. De todos modos,
incluso con esta opción, los comandos con formato largo
funcionan desde la primera línea.
--no-pager
No usa paginación para mostrar la salida de una consulta. La paginación en la salida se discute más en Sección 8.3.1, “Comandos mysql”.
--no-tee
No copia la salida en un fichero. Los ficheros tee se discuten más en Sección 8.3.1, “Comandos mysql”.
--one-database, -O
Ignora comandos excepto aquéllos para la base de datos por defecto, nombrada en la línea de comandos. Esto es útil para evitar actualizaciones de otras bases de datos en el log binario.
--pager[=
comando]
Este comando se utiliza para paginar la salida de una
consulta. Si el comando se omite, el paginador por defecto es
el valor de la variable de entorno PAGER.
Paginadores válidos son less,
more, cat [>
nombre_de_fichero], etcétera. Esta opción sólo
funciona en Unix. No funciona en modo batch. La paginación de
la salida de datos (output) se discute también en
Sección 8.3.1, “Comandos mysql”.
--password[=,
contraseña]-p[
contraseña]
La contraseña a usar al conectar al servidor. Si se usa la
forma de opción corta (-p),
no se deben poner espacios entre la
opción y la contraseña. Si se omite el valor de la
contraseña, a continuación de --password o
-p en la línea de comandos, aparece un
prompt pidiéndola. La contraseña debe omitirse en sistemas
Unix basados en SysV, ya que debe mostrarse en la salida de
ps.
--port=,
puerto_num-P
puerto_num
El puerto TCP/IP a usar en la conexión.
--prompt=
formato_cadena
Asigna al prompt el formato especificado. Por defecto es
mysql>. Las secuencias especiales que
soporta el prompt se describen en
Sección 8.3.1, “Comandos mysql”.
--protocol={TCP | SOCKET | PIPE | MEMORY}
Protocolo de conexión a usar.
--quick, -q
No cachea cada resultado de consulta, muestra cada registro según va llegando. Esto puede ralentizar el servidor si la salida se suspende. Con esta opción, mysql no usa el fichero histórico.
--raw, -r
Muestra los valores de las columnas sin conversión de escape.
Se usa a menudo con la opción --batch.
--reconnect
Si se pierde la conexión con el servidor, intenta reconectar
automáticamente. Se intenta un único intento de reconexión
cada vez que se pierde la conexión. Para eliminar el
comportamiento de la reconexión, use
--skip-reconnect.
--safe-updates,
--i-am-a-dummy, -U
Sólo permite aquellos comandos UPDATE y
DELETE que especifica cuáles registros se
deben modificar usando valores clave. Si tiene activada esta
opción en un fichero de opciones, puede evitarla usando
--safe-updates en la línea de comandos.
Consulte Sección 8.3.3, “Sugerencias acerca de mysql” para más información
sobre esta opción.
--secure-auth
No envía contraseñas al servidor en formato antiguo (pre-4.1.1). Esto evita realizar conexiones con servidores que no usen el formato de contraseña nuevo.
--show-warnings
Muestra los mensajes de advertencia tras cada comando, si es necesario. Esta opción se aplica en modo interactivo y batch. Esta opción se añadió en MySQL 5.0.6.
--sigint-ignore
Ignora señales SIGINT (típicamente el
resultado de pulsar Control-C).
--silent, -s
Modo silencioso. Produce menos salida de datos (output). Esta opción puede utilizarse múltiples veces para producir cada vez menos salida de datos.
--skip-column-names, -N
No escribe nombres de columnas en los resultados.
--skip-line-numbers, -L
No escribe el número de línea en los errores. Es útil cuando se quiere comparar ficheros de resultados que incluyan mensajes de error.
--socket=,
ruta-S
ruta
Fichero socket a usar para la conexión.
--table, -t
Muestra la salida de datos (output) en formato de tabla. Éste es el modo de funcionamiento por defecto para modo interactivo, pero puede usarse para producir la salida de datos de la tabla en modo batch.
--tee=
nombre_fichero
Añade una copia de la salida de datos (output) al fichero dado. Esta opción no funciona en modo batch. Más información sobre ficheros tee en Sección 8.3.1, “Comandos mysql”.
--unbuffered, -n
Vuelca el buffer después de cada consulta.
--user=,
nombre_usuario-u
nombre_usuario
El nombre de usuario MySQL usado al conectar al servidor.
--verbose, -v
Modo explícito. Produce más salida de datos (output) acerca
de lo que hace el programa. Esta opción puede escribirse
múltiples veces para producir más y más salida. (Por
ejemplo, -v -v -v produce la salida de datos
en formato de tabla incluso en modo batch.)
--version, -V
Muestra información de la versión y sale.
--vertical, -E
Muestra los registros de salida de la consulta verticalmente
(una línea por cada valor). Sin esta opción, se puede
solicitar este formato de salida de datos (output) para un
comando escribiendo \G al final del mismo.
--wait, -w
Si la conexión no puede establecerse, espera y vuelve a intentarlo en lugar de abortar.
--xml, -X
Produce salida XML.
Puede asignar las siguientes variables usando las opciones
--:
nombre_variable=valor
connect_timeout
Número de segundos antes que la conexión dé un timeout. (El valor por defecto es 0).
max_allowed_packet
La máxima longitud del paquete para enviar al o recibir del servidor. (El valor por defecto es 16MB).
max_join_size
El límite automático de registros en un join al usar
--safe-updates. (El valor por defecto es
1.000.000).
net_buffer_length
El tamaño de búfer para comunicaciones TPC/IP y socket. (El valor por defecto es 16KB).
select_limit
Límite automático para comandos SELECT al
usar --safe-updates. (El valor por defecto es
1.000).
Es posible asignar valores a las variables usando la sintaxis
--set-variable=
o nombre_variable=valor-O
.
En MySQL 5.0, esta sintaxis está obsoleta.
nombre_variable=valor
En Unix, el cliente mysql escribe un registro
de los comandos ejecutados en un fichero histórico. Por defecto,
el fichero histórico se llama .mysql_history
y se crea en el directorio raíz del usuario. Para especificar un
fichero diferente, cámbiese el valor de la variable de entorno
MYSQL_HISTFILE.
Si no se quiere mantener el fichero histórico, primero hay que
borrar .mysql_history si existe, y luego se
utiliza alguna de las siguientes técnicas:
Se cambia el valor de la variable
MYSQL_HISTFILE a
/dev/null. Para que este cambio tenga
efecto cada vez que se entra, se pone la asignación de esta
variable de entorno en uno de los ficheros de arranque de la
shell del usuario.
Se crea .mysql_history como enlace
simbólico a /dev/null:
shell> ln -s /dev/null $HOME/.mysql_history
Sólo es necesario hacer esto una vez.
mysql envía comandos SQL al servidor para
que sean ejecutados. También hay un conjunto de comandos que
mysql interpreta por sí mismo. Para obtener
una lista de estos comandos, se escribe help
o \h en el prompt
mysql>:
mysql> help
MySQL commands:
? (\h) Synonym for `help'.
clear (\c) Clear command.
connect (\r) Reconnect to the server.
Optional arguments are db and host.
delimiter (\d) Set query delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server,
display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager].
Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file.
Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile].
Append everything into given outfile.
use (\u) Use another database.
Takes database name as argument.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
Cada comando tiene forma corta y larga. La forma larga no es sensible a mayúsculas; la forma corta lo es. La forma larga puede seguirse con un terminador de punto y coma, pero la forma corta no debería.
En el comando delimiter, debe evitar el uso
del carácter antibarra ('\') ya que es un
carácter de escape para MySQL.
Los comandos edit,
nopager, pager, y
system sólo funcionan en Unix.
El comando status proporciona alguna
información sobre la conexión y el servidor que está usando.
Si está ejecutando el modo --safe-updates,
status también muestra los valores para las
variables mysql que afectan a sus consultas.
Para loguear las consultas y su salida, use el comando
tee. Todos los datos mostrados por pantalla
se guardan en un fichero dado. Esto puede ser muy útil para
depurar. Puede activar esta característica en la línea de
comandos con la opción --tee, o
interactivamente con el comando tee. El
fichero tee puede desactivarse
interactivamente con el comando notee.
Ejecutando tee de nuevo, vuelve a activar el
logueo. Sin parámetros, se utiliza el fichero anterior. Tenga
en cuenta que tee vuelca los resultados de
las consultas al fichero después de cada comando, justo antes
que mysql muestre su siguiente prompt.
Navegar o buscar resultados de consultas en modo interactivo
usando programas Unix, tales como less,
more, o cualquier otro programa similar es
posible con la opción --pager. Si no
especifica ningún valor para la opción,
mysql comprueba el valor de la variable de
entorno PAGER y configura el paginador al
valor de la misma. La paginación de la salida de datos (output)
puede activarse interactivamente con el comando
pager y desactivar con
nopager. El comando tiene un argumento
opcional; si se especifica, el programa de paginación se
configura con el mismo. Sin argumento, el paginador se configura
con el paginador que se especificó en la línea de comandos, o
stdout si no se especifica paginador.
La paginación de la salida sólo funciona en Unix ya que usa la
función popen(), que no existe en Windows.
Para Windows, la opción tee puede usarse
para guardar la salida de las consultas, aunque no es tan
conveniente como pager para navegar por la
salida en algunas situaciones.
Algunos consejos sobre el comando pager:
Puede usarlo para escribir en un fichero y que los resultados sólo vayan al fichero:
mysql> pager cat > /tmp/log.txt
Puede pasar cualquier opción al programa que quiera usar como paginador:
mysql> pager less -n -i -S
En el ejemplo precedente, tenga en cuenta la opción
-S. Puede encontrarla muy útil para
consultar una amplia variedad de resultados. En ocasiones un
conjunto de resultados muy amplio es difícil de leer en
pantalla. La opción -S con
less puede hacer el resultado mucho más
legible ya que puede desplazarlo horizontalmente usando las
flechas de izquierda y derecha. También puede usar
-S interactivamente con
less para activar y desactivar el modo de
navegación horizontal. Para más información, lea la
página del manual (man) de less:
shell> man less
Puede especificar comandos muy complejos para el paginador, para tratar la salida de las consultas:
mysql> pager cat | tee /dr1/tmp/res.txt \
| tee /dr2/tmp/res2.txt | less -n -i -S
En este ejemplo, el comando enviaría los resultados de las
consultas a dos ficheros en dos directorios distintos en dos
sistemas de ficheros montados en /dr1 y
/dr2,y mostraría los resultados en
pantalla vía less.
Puede combinar las funciones tee y
pager. Puede tener un fichero
tee activado y tener el
pager configurado con
less, siendo capaz de navegar en los
resultados con el programa less y al mismo
tiempo tener todo en un fichero. La diferencia entre
tee en Unix usado con el comando
pager y el comando tee que
implementa mysql es que el segundo
tee funciona incluso si no tiene el
tee de Unix disponible. El comando
tee implementado también loguea todo lo que
se muestra por pantalla, mientras que tee en
Unix usado con pager no loguea tanto.
Adicionalmente, el logueo en fichero de tee
puede activarse y desactivarse interactivamente desde
mysql. Esto es útil cuando quiere loguear
algunas consultas en un fichero, pero no otras.
En MySQL 5.0, el prompt por defecto mysql>
puede reconfigurarse. La cadena de caracteres para definir el
prompt puede contener las siguientes secuencias especiales:
| Opción | Descripción |
\v | Versión del servidor |
\d | Base de datos actual |
\h | Equipo del servidor |
\p | Puerto TCP/IP usado o fichero socket |
\u | Nombre de usuario |
\U | Nombre de cuenta
completo |
\\ | Carácter de barra invertida '\' literal |
\n | Carácter de nueva línea |
\t | Carácter de tabulador |
\ | Espacio (hay un espacio a continuación de la barra invertida) |
\_ | Espacio |
\R | Hora actual, en formato militar de 24 horas (0-23) |
\r | Hora actual, en formato estándar de 12 horas (1-12) |
\m | Minutos de la hora actual |
\y | Año actual, dos dígitos |
\Y | Año actual, cuatro dígitos |
\D | Fecha actual completa |
\s | Segundos de la hora actual |
\w | Día actual de la semana en inglés, en formato de tres letras (Mon, Tue, ...) |
\P | am/pm |
\o | Mes actual en formato numérico |
\O | Mes actual en inglés, en formato de tres letras (Jan, Feb, ...) |
\c | Contador que incrementa con cada comando ejectuado |
\S | Punto y coma |
\' | Comilla |
\" | Comilla doble |
'\' seguido por cualquier otra letra es esa
letra.
Si especifica el comando prompt sin
argumentos, mysql resetea el prompt al valor
por defecto de mysql>.
Puede cambiar el prompt de diversas formas:
Use una variable de entorno
Puede cambiar la variable de entorno
MYSQL_PS1 con una cadena de caracteres.
Por ejemplo:
shell> export MYSQL_PS1="(\u@\h) [\d]> "
Con un fichero de opciones
Puede cambiar la opción prompt en el
grupo [mysql] de cualquier fichero de
opciones MySQL, tal como /etc/my.cnf o
el fichero .my.cnf en el directorio
raíz. Por ejemplo:
[mysql] prompt=(\\u@\\h) [\\d]>\\_
En este ejemplo, tenga en cuenta que las barras invertidas
son dos. Si asigna el valor del prompt usando la opción
prompt en un fichero de opciones, se
recomienda poner dos barras invertidas al usar las opciones
especiales de prompt. Hay algúna redundancia en el conjunto
de opciones de prompt disponible y el conjunto de secuencias
de caracteres de escape especiales que se reconoce en el
fichero de opciones. (Estas secuencias están listadas en
Sección 4.3.2, “Usar ficheros de opciones”). La redundancia puede causar
problemas si usa sólo una barra invertidas. Por ejemplo,
\s se interpreta como un espacio en lugar
de los segundos actuales. El siguiente ejemplo muestra cómo
definir un prompt dentro de un fichero de opciones que
incluya la hora actual en formato
HH:MM:SS>:
[mysql] prompt="\\r:\\m:\\s> "
Use una opción por línea de comandos
Puede cambiar la opción --prompt en la
línea de comandos de mysql. Por ejemplo:
shell> mysql --prompt="(\u@\h) [\d]> " (user@host) [database]>
Interactivamente
Puede cambiar el prompt interactivamente usando el comando
prompt (o \R) . Por
ejemplo:
mysql> prompt (\u@\h) [\d]>\_ PROMPT set to '(\u@\h) [\d]>\_' (usuario@equipo) [base_de_datos]> (usuario@equipo) [base_de_datos]> prompt Returning to default PROMPT of mysql> mysql>
El cliente mysql se usa normalmente de forma interactiva, como se muestra a continuación:
shell> mysql nombre_base_de_datos
Sin embargo, es posible poner comandos SQL en un fichero y
decirle a mysql que lea las entradas de ese
fichero. Para ello, cree un fichero
fichero_de_texto que contenga el comando
que quiera ejecutar. Luego invoque mysql como
se muestra aquí:
shell> mysqlnombre_base_de_datos<fichero_de_texto
Puede comenzar su fichero de texto con un comando USE
. En
este caso, no es necesario especificar el nombre de la base de
datos en la línea de comandos:
nombre_base_de_datos
shell> mysql < text_file
Si está ejecutando mysql, puede ejecutar un
script SQL en un fichero usando el comando
source o \. :
mysql> sourcenombre_de_ficheromysql> \.nombre_de_fichero
Si desea que el script muestre información de progreso al usuario, puede insertar algunas líneas como
SELECT '<información>' AS ' ';
que muestra <información>.
Para más información acerca del modo batch, consulte Sección 3.5, “Usar mysql en modo batch”.
Esta sección describe algunas técnicas que pueden ayudarle a usar mysql de forma más efectiva.
Algunos resultados de consultas son mucho más legibles cuando se muestran verticalmente, en lugar del formato habitual de tabla horizontal. Las consultas pueden mostrarse verticalmente terminando las mismas con \G en lugar de un punto y coma. Por ejemplo, valores de texto largos que incluyan nuevas líneas, a menundo son más fáciles de leer en formato vertical:
mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G
*************************** 1. row ***************************
msg_nro: 3068
date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
reply: monty@no.spam.com
mail_to: "Thimble Smith" <tim@no.spam.com>
sbj: UTF-8
txt: >>>>> "Thimble" == Thimble Smith writes:
Thimble> Hi. I think this is a good idea. Is anyone familiar
Thimble> with UTF-8 or Unicode? Otherwise, I'll put this on my
Thimble> TODO list and see what happens.
Yes, please do that.
Regards,
Monty
file: inbox-jani-1
hash: 190402944
1 row in set (0.09 sec)
Una opción de arranque útil para principiantes es
--safe-updates (o
--i-am-a-dummy, que tiene el mismo efecto).
Es útil para casos donde pueda haber ejecutado un comando
DELETE FROM
pero olvidó
la cláusula nombre_tablaWHERE. Normalmente, ese
comando borra todos los registros de la tabla. Con
--safe-updates, puede borrar registros sólo
especificando los valores clave que los identifican. Esto
ayuda a prevenir accidentes.
Cuando usa la opción --safe-updates,
mysql realiza los siguientes comandos al
conectarse al servidor MySQL:
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=1000, SQL_MAX_JOIN_SIZE=1000000;
Consulte Sección 13.5.3, “Sintaxis de SET”.
El comando SET tiene el siguiente efecto:
No está permitido ejecutar un comando
UPDATE o DELETE a no
ser que especifique una condición clave en la cláusula
WHERE o proporcione una cláusula
LIMIT (o ambas). Por ejemplo:
UPDATEnombre_tablaSETcolumna_no_clave=# WHEREcolumna_clave=#; UPDATEnombre_tablaSETcolumna_no_clave=# LIMIT 1;
Todos los resultados grandes de un
SELECT se limitan automáticamente a
1.000 registros a no ser que el comando incluya una
cláusula LIMIT .
Se aborta comandos SELECT de múltiples
tablas que probablemente necesiten examinar más de
1,000,000 de registros.
Para especificar límites distintos a los anteriores, puede
cambiar los valores por defecto con las opciones
--select_limit y
--max_join_size:
shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
Si el cliente mysql pierde la conexión al enviar una consulta, inmediatamente y de forma automática trata de reconectar una vez con el servidor y envía la consulta de nuevo. Sin embargo, incluso si mysql tiene éxito al reconectar, la primera conexión ha terminado y todos los objetos de sesión previos y opciones se pierden: tablas temporales, modo "autocommit", y variables de usuario y de sesión. Este comportamiento puede ser problemático, como en el siguiente ejemplo, donde el servidor se apaga y reinicia sin conocimiento del usuario:
mysql> SET @a=1; Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO t VALUES(@a); ERROR 2006: MySQL server has gone away No connection. Trying to reconnect... Connection id: 1 Current database: test Query OK, 1 row affected (1.30 sec) mysql> SELECT * FROM t; +------+ | a | +------+ | NULL | +------+ 1 row in set (0.05 sec)
La variable de usuario @a se ha perdido con
la conexión, y tras la reconexión no está definida. Si es
importante que mysql termine con un error
cuando se pierda la conexión, puede arrancar el cliente
mysql con la opción
--skip-reconnect .
mysqladmin es un cliente para realizar operaciones administrativas. Se puede usar para comprobar la configuración y el estado actual del servidor, crear y borrar bases de datos, y con más finalidades.
Invoque mysqladmin así:
shell> mysqladmin [opciones]comando[opciones_de_comando]comando...
mysqladmin soporta los siguientes comandos:
create
nombre_base_de_datos
Crea una nueva base de datos llamada
nombre_base_de_datos.
debug
Le dice al servidor que escriba información de depuración en el log de error.
drop
nombre_base_de_datos
Borra la base de datos llamada
nombre_base_de_datos y todas sus
tablas.
extended-status
Muestra las variables de estado del servidor y sus valores.
flush-hosts
Vuelca toda la información en la caché del equipo.
flush-logs
Vuelca todos los logs.
flush-privileges
Recarga las tablas de permisos (lo mismo que
reload).
flush-status
Limpia las variables de estado.
flush-tables
Vuelca todas las tablas.
flush-threads
Vuelca la caché de threads.
kill id,id,...
Mata los threads del servidor.
old-password
nueva_contraseña
Es como el comando password pero guarda la
contraseña usando el formato de hash antiguo (pre-4.1).
Consulte Sección 5.6.9, “Hashing de contraseñas en MySQL 4.1”.)
password
nueva_contraseña
Introduce una nueva contraseña. Esto cambia la contraseña a
nueva_contraseña para la cuenta que usa
con mysqladmin para conectar con el
servidor.
Si nueva_contraseña contiene
espacios u otros caracteres que son especiales para su
intérprete de comandos, debe ponerla entre comillas. En
Windows, aségurese de usar comillas dobles en lugar de
simples; comillas simples no se eliminan de la contraseña
sino que se interpretan como parte del acontraseña. Por
ejemplo:
shell> mysqladmin password "mi nueva contraseña"
ping
Comprueba si el servidor está vivo. El estado retornado por
mysqladmin es 0 si el servidor está en
ejecución, 1 si no lo está. En MySQL 5.0, el estado es 0
incluso en caso de un error tal como Access
denied, ya que esto significa que el servidor está
en ejecución pero no ha admitido la conexión, lo que no es
lo mismo que el servidor no esté en ejecución.
processlist
Muestra una lista de los threads activos del servidor. Esto es
como la salida del comando SHOW
PROCESSLIST. Si se da la opción
--verbose, la salida es como la de
SHOW FULL PROCESSLIST. (Consulte
Sección 13.5.4.16, “Sintaxis de SHOW PROCESSLIST”.)
reload
Recarga las tablas de permisos.
refresh
Vuelca todas las tablas y cierra y abre los ficheros de logs.
shutdown
Detiene el servidor.
start-slave
Comienza la replicación en un servidor esclavo.
status
Muestra un mensaje de estado corto del servidor.
stop-slave
Detiene la replicación en un servidor esclavo.
variables
Muestra las variables de sistema del servidor y sus valores.
version
Muestra información de la versión del servidor.
Todos los comandos pueden abreviarse a un prefijo único. Por ejemplo:
shell> mysqladmin proc stat +----+------+-----------+----+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+----+---------+------+-------+------------------+ | 51 | root | localhost | | Query | 0 | | show processlist | +----+------+-----------+----+---------+------+-------+------------------+ Uptime: 1473624 Threads: 1 Questions: 39487 Slow queries: 0 Opens: 541 Flush tables: 1 Open tables: 19 Queries per second avg: 0.0268 Memory in use: 92M Max memory used: 410M
El comando mysqladmin status muestra los siguientes valores:
Uptime
Número de segundos que MySQL server ha estado en ejecución.
Threads
Número de threads activos (clientes).
Questions
Número de preguntas (consultas) de los clientes desde el arranque del servidor.
Slow queries
Número de consultas que han tardado más de
long_query_time segundos. Consulte
Sección 5.10.4, “El registro de consultas lentas (Slow Query Log)”.
Opens
Número de tablas que el servidor ha abierto.
Flush tables
Número de comandos flush ...,
refresh y reload
ejecutados.
Open tables
Número de tablas abiertas actualmente.
Memory in use
Cantidad de memoria reservada directamente por el código de
mysqld. Este valor se muestra sólo cuando
MySQL es ha compilado con --with-debug=full.
Maximum memory used
La cantidad máxima de memoria reservada directamente por el
código de mysqld. Este valor se muestra
sólo cuando MySQL se ha compilado con
--with-debug=full.
Si ejecuta mysqladmin shutdown al conectar a un servidor local usando ficheros socket Unix, mysqladmin espera hasta que el fichero con el ID del proceso del servidor se haya borrado, para asegurar que el servidor se ha parado correctamente.
mysqladmin soporta las siguientes opciones:
--help, -?
Muestra un mensaje de ayuda y sale.
--character-sets-dir=
ruta
Directorio donde están instalados los conjuntos de caracteres. Consulte Sección 5.9.1, “El conjunto de caracteres utilizado para datos y ordenación”.
--compress, -C
Comprime toda la información enviada entre el cliente y el servidor, si ambos soportan compresión.
--count=,
#-c
#
Número de iteraciones a realizar en la ejecución de comandos
repetidos. Esto funciona sólo con --sleep
(-i).
--debug[=,
opciones_de_depuración]-#
[
opciones_de_depuración]
Escribe un log de depuración. La cadena de caracteres
opciones_de_depuración a menudo es
'd:t:o,.
Por defecto es
nombre_de_fichero''d:t:o,/tmp/mysqladmin.trace'.
--default-character-set=
conjunto_de_caracteres
Usa conjunto_de_caracteres como el
conjunto de caracteres por defecto. Consulte
Sección 5.9.1, “El conjunto de caracteres utilizado para datos y ordenación”.
--force, -f
No pide confirmación para el comando drop
database. Con comandos múltiples, continúa incluso
si hay un error.
--host=,
nombre_de_equipo-h
nombre_de_equipo
Conecta con el servidor MySQL en un equipo dado.
--password[=,
contraseña]-p[
contraseña]
La contraseña a usar cuando conecta con el servidor. Si usa
la forma corta de la opción (-p),
no puede haber un espacio entre la
opción y la contraseña. Si omite el valor
contraseña siguiente a la opción
--password o -p en la línea
de comando, aparece un prompt pidiéndola.
--port=,
número_de_puerto-P
número_de_puerto
Puerto TCP/IP para usar en las conexiones.
--protocol={TCP | SOCKET | PIPE | MEMORY}
Protocolo de conexión en uso. Nuevo en MySQL 4.1.
--relative, -r
Muestra la diferencia entre los valores actuales y anteriores
cuando se usa con -i. Actualmente, esta
opción sólo funciona con el comando
extended-status.
--silent, -s
Sale silenciosamente si no puede establecerse una conexión con el servidor.
--sleep=,
retraso-i
retraso
Ejecuta comandos una y otra vez, durmiendo durante
retraso segundos entre ellos.
--socket=,
ruta-S
ruta
El fichero socket a usar en la conexión.
--user=,
nombre_de_usuario-u
nombre_de_usuario
Nombre de usuario MySQL a usar al conectar con el servidor.
--verbose, -v
Modo explícito. Muestra más información sobre lo que hace el programa.
--version, -V
Muestra información sobre la versión y sale.
--vertical, -E
Muestra la salida (output) verticalmente. Es similar a
--relative, pero la salida es vertical.
--wait[=,
#]-w[
#]
Si la conexión no puede establecerse, espera y vuelve a intentarlo en lugar de abortar. Si se da un valor de opción, indica el número de veces a reintentar. El valor por defecto es una vez.
Puede asignar valores a las siguientes variables usando las
opciones
--
:
nombre_de_variable=valor
connect_timeout
El número de segundos máximos antes que la conexión dé un timeout. El valor por defecto es 43200 (12 horas).
shutdown_timeout
El número máximo de segundos a esperar para la parada del servidor. El valor por defecto es 3600 (1 hora).
También es posible asignar valores a las variables usando la
sintaxis
--set-variable=
o nombre_de_variable=valor-O
.
Sin embargo, esta sintaxis está obsoleta desde MySQL 4.0.
nombre_de_variable=valor
Los ficheros de log binario que el servidor genera se escriben en formato binario. Para examinar estos ficheros en formato de texto, se utiliza la utilidad mysqlbinlog .
Invoque mysqlbinlog así:
shell> mysqlbinlog [opciones]fichero_de_log...
Por ejemplo, para mostrar el contenido del log binario
binlog.000003, use este comando:
shell> mysqlbinlog binlog.0000003
La salida incluye todos los comandos contenidos en
binlog.000003, junto con otra información
tal como el tiempo que ha tardado cada comando, el ID del thread
del cliente que lo lanzó, la hora en que se ejecutó, etcétera.
Normalmente, mysqlbinlog se utiliza para leer
ficheros de log binarios directamente y aplicarlos al servidor
MySQL local. También es posible leer logs binarios de un servidor
remoto usando la opción
--read-from-remote-server .
Cuando se vaya a leer logs binarios remotos, deben darse los
parámetros de conexión para indicar cómo conectar con el
servidor, pero se ignoran a no ser que también se especifique la
opción --read-from-remote-server . Estas
opciones son --host, --password,
--port, --protocol,
--socket y --user.
También puede utilizarse mysqlbinlog para leer ficheros de logs de relay escritos por un servidor esclavo en el arranque de una replicación. Los logs de relay tienen el mismo formato que los ficheros de log binarios.
El log binario se discute en Sección 5.10.3, “El registro binario (Binary Log)”.
mysqlbinlog soporta las siguientes opciones:
--help, -?
Muestra un mensaje de ayuda y sale.
--database=,
nombre_de_base_de_datos-d
nombre_de_base_de_datos
Muestra las entradas sólo para esta base de datos (sólo log local)
--force-read, -f
Con esta opción, si mysqlbinlog lee de un log binario un evento que no reconoce, muestra una advertencia, ignora el comando, y continúa. Sin esta opción, mysqlbinlog se detiene si lee un evento que no reconoce.
--host=,
nombre_de_equipo-h
nombre_de_equipo
Obtiene el log binario del servidor MySQL del equipo dado.
--local-load=,
ruta-l
ruta
Prepara ficheros temporales locales para LOAD DATA
INFILE en el directorio especificado.
--offset=,
N-o
N
Ignora las primeras N entradas.
--password[=,
contraseña]-p[
contraseña]
La contraseña a usar cuando se conecta al servidor. Si usa la
forma corta de opción (-p),
no puede tener un espacio entre la
opción y la contraseña. Si omite el valor
contraseña siguiente a la opción
--password o -p en la línea
de comandos, aparece un prompt para que lo introduzca.
--port=,
número_de_puerto-P
número_de_puerto
El puerto TCP/IP a usar cuando conecta con un servidor remoto.
--position=,
N-j
N
Obsoleto, use --start-position.
--protocol={TCP | SOCKET | PIPE | MEMORY}
Protocolo de conexión a usar.
--read-from-remote-server,
-R
Lee el log binario de un servidor MySQL en vez de leer el
local. Cualquier opción de parámetros de conexión se ignora
a no ser que esta opción se dé también. Estas opciones son
--host, --password,
--port, --protocol,
--socket, y --user.
--result-file=,
nombre-r
nombre
Salida directa al fichero dado.
--short-form, -s
Muestra sólo los comandos contenidos en el log, sin ninguna información extra.
--socket=,
ruta-S
ruta
Fichero socket a usar para la conexión.
--start-datetime=
datetime
Comienza a leer el log binario en el primer evento que tenga
una fecha igual o posterior a la del argumento
datetime . El valor
datetime es relativo a la zona
horaria local en la máquina donde se ejecuta
mysqlbinlog. El valor debe estar en un
formato aceptado por los tipos de datos
DATETIME o TIMESTAMP .
Por ejemplo:
shell> mysqlbinlog --start-datetime="2004-12-25 11:25:56" binlog.000003
Esta opción es útil para recuperaciones en un punto temporal concreto.
--stop-datetime=
datetime
Detiene la lectura del log binario en el primer evento que
tenga una fecha igual o posterior a la del argumento
datetime. Consulte la descripción de la
opción --start-datetime para información
acerca del valor de datetime.
--start-position=
N
Comienza a leer el log binario en el primer evento que tenga
una posición igual al argumento N.
--stop-position=
N
Deja de leer el log binario en el primer evento que tenga una
posición igual o superior al argumento N.
--to-last-log, -t
No se detiene al final del log binario solicitado del servidor
MySQL, sino que sigue mostrando información hasta el final
del último log binario. Si se envía la salida (output) al
mismo servidor MySQL, esto puede conducir a un bucle infinito.
Esta opción requiere
--read-from-remote-server.
--disable-log-bin, -D
Desactiva el log binario. Esto es útil para eliminar un bucle
infinito si se utiliza la opción
--to-last-log y envía la salida (output) al
mismo servidor MySQL. Esta opción también es útil cuando se
restaura tras un fallo para evitar duplicación de comandos
que se han logueado. Nota:
Esta opción requiere privilegios SUPER .
--user=,
nombre_de_usuario-u
nombre_de_usuario
Nombre de usuario MySQL a usar cuando se conecta a un servidor remoto.
--version, -V
Muestra versión de información y sale.
Puede cambiar las siguientes variales con las opciones
--:
nombre_de_variable=valor
open_files_limit
Especifica el número de descriptores de ficheros abiertos a reservar.
Puede enviar la salida (output) de mysqlbinlog a un cliente mysql para que ejecute los comandos contenidos en el log binario. Esto se usa para recuperar de un fallo cuando tiene una copia de seguridad antigua (consulte Sección 5.8.1, “Copias de seguridad de bases de datos”):
shell> mysqlbinlog nombre_de_equipo-bin.000001 | mysql
O:
shell> mysqlbinlog hostname-bin.[0-9]* | mysql
También puede redirigir la salida (output) de mysqlbinlog a un fichero de texto, si necesita modificar el log de comandos primero (por ejemplo, para eliminar comandos que no quiere ejecutar por alguna razón). Tras editar el fichero, ejecute los comandos que contiene usándolo como entrada del programa mysql .
mysqlbinlog tiene la opción
--start-position, que muestra sólo aquellos
comandos con un desplazamiento en el log binario mayor o igual a
una posición dada (la posición dada debe coincidir con el
comienzo de un evento). También tiene las opciones de parar o
arrancar cuando ve un evento de una fecha y hora dada. Esto
permite ejecutar recuperaciones a partir de un punto temporal
usando la opción --stop-datetime (que permite
decir, por ejemplo, "devuelve mi base de datos al estado en que
estaba hoy a las 10:30 AM").
Si tiene más de un log binario para ejecutar en el servidor MySQL, el método seguro es procesarlos todos usando una conexión única con el servidor. El siguiente ejemplo muestra una forma peligrosa de hacerlo:
shell> mysqlbinlognombre_de_equipo-bin.000001 | mysql # PELIGRO!! shell> mysqlbinlognombre_de_equipo-bin.000002 | mysql # PELIGRO!!
Procesar logs binarios de esta manera, utilizando diferentes
conexiones con el servidor provoca problemas si el primer fichero
de log contiene un comando CREATE TEMPORARY
TABLE y el segundo log contiene un comando que usa la
tabla temporal. Cuando el primer proceso mysql
termina, el servidor elimina la tabla temporal. Cuando el segundo
proceso mysql trata de usar la tabla, el
servidor devuelve “tabla desconocida”.
Para evitar problemas como éste, utilice una única conexión para ejecutar los contenidos de todos los logs binarios que quiere procesar. Sigue una forma de hacerlo:
shell> mysqlbinlognombre_de_equipo-bin.000001nombre_de_equipo-bin.000002 | mysql
Otra forma de hacerlo es escribir todos los logs a un único fichero y luego procesar el fichero:
shell> mysqlbinlognombre_de_equipo-bin.000001 > /tmp/statements.sql shell> mysqlbinlognombre_de_equipo-bin.000002 >> /tmp/statements.sql shell> mysql -e "source /tmp/statements.sql"
En MySQL 5.0, mysqlbinlog puede producir la
salida (output) que reproduce una operación LOAD DATA
INFILE sin el fichero de datos original.
mysqlbinlog copia los datos en un fichero
temporal y escribe un comando LOAD DATA LOCAL
INFILE que se refiere a este fichero. La localización
por defecto del directorio donde estos ficheros se escriben es
específico del sistema. Para espeficar un directorio
explícitamente, use la opción --local-load.
Como mysqlbinlog convierte comandos
LOAD DATA INFILE en comandos LOAD DATA
LOCAL INFILE (esto es, añade LOCAL).
Tanto el cliente como el servidor que se utiliza para procesar los
comandos deben estar configurados para permitir
LOCAL. Consulte
Sección 5.5.4, “Cuestiones relacionadas con la seguridad y LOAD DATA LOCAL”.
Atención: Los ficheros
temporales creados por comandos LOAD DATA LOCAL
no se borran automáticamente ya que se
necesitan hasta que los comandos se ejecutan totalmente. Debe
borrar los ficheros temporales cuando no necesite el log de
comandos. Los ficheros pueden encontrarse en el directorio de
ficheros temporales y tienen nombres como
original_file_name-#-#.
En el futuro, eliminaremos este problema permitiendo que
mysqlbinlog pueda conectarse directamente a un
servidor mysqld. Así será posible eliminar
los ficheros de log automáticamente cuando los comandos
LOAD DATA INFILE se hayan ejecutado.
El cliente mysqlcheck comprueba y repara tablas
MyISAM. También puede optimizar y analizar
tablas.
mysqlcheck es similar a myisamchk, pero funciona de forma distinta. La principal diferencia operacional es que mysqlcheck debe usarse cuando el servidor mysqld está en ejecución, mientras que myisamchk debe usarse cuando no lo está. El beneficio de usar mysqlcheck es que no tiene que parar el servidor para comprobar o reparar las tablas.
mysqlcheck usa los comandos SQL CHECK
TABLE, REPAIR TABLE, ANA