Capítulo 4. Usar los programas MySQL
Anterior |  | Siguiente

## Capítulo 4. Usar los programas MySQL

Este capítulo proporciona una descripción concisa de las utilidades de línea de comandos provistas por MySQL AB y de las opciones que se puden suministrar al ejecutarlas. La mayoría de los programas tienen opciones que son propias de su operación, pero la sintaxis para especificarlas es idéntica para todos. En los capítulos posteriores se brinda una descripción más detallada de cada utilidad, incluyendo las opciones que reconoce cada una

MySQL AB también suministra tres programas con interfaz gráfica de usuario para utilizar con el servidor de bases de datos MySQL:

- MySQL Administrator: Esta herramienta se emplea para la administración de servidores, bases de datos, tablas y usuarios de MySQL.

- MySQL Query Browser: Esta herramienta gráfica es provista por MySQL AB para crear, ejecutar, y optimizar consultas dirigidas a bases de datos MySQL.

- MySQL Migration Toolkit: Herramienta orientada a brindar asistencia en el proceso de migración de esquemas y datos desde otros sistemas gestores de bases de datos relacionales hacia MySQL.

## 4.1. Panorámica de programas MySQL

MySQL AB proporciona varios tipos de programas:

- El servidor MYSQL y los scripts de inicio del servidor:

  - mysqld es el servidor MySQL

  - mysqld_safe, mysql.server, y mysqld_multi son scripts de inicio del servidor

  - mysql_install_db inicializa el directorio "data" y las bases de datos que MySQL instala por defecto.

  Estos programas son comentados posteriormente en Capítulo 5, Administración de bases de datos.

- Programas cliente que acceden al servidor:

  - mysql es un programa cliente que porporciona una interfaz de linea de comandos para ejecutar sentencias SQL en modo interactivo o por lotes.

  - mysqladmin es un cliente para administración.

  - mysqlcheck ejecuta operaciones de mantenimiento de tablas.

  - mysqldump y mysqlhotcopy son utilidades para copia de respaldo.

  - mysqlimport realiza importación de ficheros de datos.

  - mysqlshow muestra información relativa a tablas y bases de datos.

  Estos programas son comentados posteriormente en Capítulo 8, Programas cliente y utilidades MySQL.

- Programas que operan independientemente del servidor:

  - myisamchk ejecuta operaciones de mantenimiento de tablas.

  - myisampack genera tablas comprimidas, de sólo lectura.

  - mysqlbinlog es una herramienta para procesar archivos de registro binario (binary logs).

  - perror informa el significado de un código de error.

  myisamchk es comentado posteriormente en Capítulo 5, Administración de bases de datos. Los demás programas tienen su descripción en Capítulo 8, Programas cliente y utilidades MySQL.

La mayoría de las distribuciones de MySQL incluyen todos los programas mencionados, con excepción de los que son específicos de cada plataforma. (Por ejemplo, los scripts de inicio de servidor no son necesarios en Windows). Otra excepción es que las distribuciones RPM son más especializadas. Existe una RPM para el servidor, otra para los programas cliente, etc. En el caso de no hallar uno o más programas, consulte Capítulo 2, Instalar MySQL para ver información sobre los tipos de distribuciones y su contenido. Es posible que se necesite realizar una instalación adicional.

## 4.2. Invocar programas MySQL

Para invocar un programa MySQL desde la línea de comandos (desde el shell o el intérprete de comandos), ingrese el nombre del programa seguido de cualquier opción u otro argumento necesario para indicarle al programa la tarea que se desea llevar a cabo con él. Los siguientes comandos muestran algunos ejemplos de cómo invocar un programa. “`shell>`” representa el prompt del intérprete de comandos, no es parte de lo que debe tipearse. El prompt que en definitiva se verá depende del intérprete de comandos utilizado. Algunos prompts típicos son: `$` para sh o bash, `%` para csh or tcsh, y `C:\>` para el command.com o cmd.exe de Windows.

    shell> mysql test
    shell> mysqladmin extended-status variables
    shell> mysqlshow --help
    shell> mysqldump --user=root personnel

Los argumentos precedidos por guiones son las opciones del programa. Estas opciones, habitualmente, especifican el tipo de conexión al servidor o afectan el modo de operación del programa. Las opciones tienen una sintaxis que se describe en Sección 4.3, “Especificar opciones de programa”.

Los argumentos que no son opciones (que no estan precedidos por guiones) suministran información adicional al programa. Por ejemplo, el programa mysql interpreta que el primer argumento no opción proporcionado es el nombre de la base de datos a utilizar, de forma que el comando `mysql test` indica que se desea emplear la base de datos `test`.

Las secciones siguientes, donde se describe individualmente cada programa, informan las opciones que es posible utilizar y el significado de los argumentos no opción adicionales.

Algunas opciones son comunes a un número de programas. Las más corrientes son `--host`, `--user`, y `--password`, las cuales especifican parámetros de conexión. Indican el ordenador host donde se está ejecutando el servidor de bases de datos MySQL, y el nombre de usuario y contraseña de la cuenta MySQL empleada para acceder. Estas tres opciones son aplicables a todos los programas cliente MySQL, permiten especificar el servidor al cual conectarse y qué cuenta usar para ello.

Es posible que necesite invocar a los programas MySQL utilizando la ruta al directorio `bin` en el que están instalados. Este es el caso más probable si obtiene un mensaje de error “program not found” cada vez que se intenta ejecutar un programa MySQL desde cualquier directorio que no sea `bin`. A fin de hacer más conveniente el uso de MySQL, puede agregar la ruta al directorio `bin` dentro de la variable de entorno `PATH`. Entonces, para ejecutar un programa sólo se necesitará ingresar su nombre, no la ruta completa.

Consulte la documentación específica de su intérprete de comandos para obtener instrucciones sobre cómo establecer el valor de `PATH`, dado que la sintaxis para establecer variables de entorno es propia de cada uno.

## 4.3. Especificar opciones de programa

Al ejecutar programas MySQL se les pueden indicar opciones en varias formas:

- En la línea de comandos, a continuación del nombre del programa. Este es el modo más común para opciones que se aplican a una ejecución específica del programa.

- En un fichero de opciones, que el programa lee al iniciarse. Esto es lo acostumbrado para opciones que se desea que el programa use cada vez que se ejecuta.

- En variables de entorno. Esto es útil para opciones que se desean aplicar cada vez que el programa se ejecuta, si bien en la práctica, para este propósito, es más común emplear ficheros de opciones. En (Sección 5.11.2, “Ejecutar varios servidores en Unix” se expone una situación donde las variables de entorno pueden ser muy útiles. Allí, se describe una práctica técnica que usa estas variables para indicar el número de puerto TCP/IP y el fichero socket de Unix, tanto para los programas cliente como para el servidor.

Los programas MySQL determinan qué opciones les fueron suministradas examinando en primer lugar las variables de entorno, luego los ficheros de opciones, y, finalmente, la línea de comandos. Si una opción se especifica más de una vez, la última tiene precedencia. Esto significa que las variables de entorno tienen la prioridad más baja, y la línea de comandos, la más alta.

Se puede aprovechar la forma en que los programas MySQL procesan las opciones si se especifican las opciones por defecto de un programa dentro de un fichero de opciones. De ese modo, no es necesario tipearlas cada vez que se ejecuta el programa, pero los valores por defecto indicados pueden ser reemplazados por otros que se incluyan en la línea de comandos

### 4.3.1. Usar opciones en la raya de comando

Las opciones de programa indicadas en la línea de comandos están sujetas a estas reglas:

- Las opciones se colocan luego del nombre del comando.

- Una opción comienza con uno o dos guiones, dependiendo de si se ha utilizado la forma corta o larga de su nombre. Muchas opciones permiten ambas formas. Por ejemplo, `-?` y `--help` son, respectivamente, las formas corta y larga de la opción que solicita a un programa MySQL que muestre un mensaje de ayuda.

- Los nombres de opciones son case sensitive. Tanto `-v` como `-V` son correctos pero tienen distinto significado. (Corresponden a la forma corta de las opciones `--verbose` y `--version`.)

- Algunas opciones aceptan que se indique un valor a continuación del nombre. Por ejemplo, `-h localhost` o `--host=localhost` indican a un programa cliente MySQL el servidor de bases de datos MySQL a utilizar. El valor de la opción le dice al programa el nombre del ordenador host donde el servidor de bases de datos MySQL se está ejecutando.

- Los nombres de opción largos se separan del valor asignado (si se les asigna uno) con un signo '`=`'. Para un nombre de opción corto, el valor puede escribirse inmediatamente a continuación de la letra de la opción, o puede haber un espacio entre ambos. (`-hlocalhost` y `-h localhost` son equivalentes.) Una excepción a esta regla es la opción para suministrar la contraseña MySQL. Esta opción puede escribirse en forma larga como `--password=`pass_val`` o como `--password`. En el último caso, donde no se incluyó la contraseña, el programa la solicitará. También puede emplearse una forma corta como `-p`pass_val`` o como `-p`. Sin embargo, en la forma corta, si se suministra una contraseña debe figurar a continuación de la letra de opción sin espacios intermedios. La razón de esto es que, si hay un espacio a continuación de la letra de opción, el programa no tiene modo de saber si el argumento que sigue es la contraseña o alguna otra clase de argumento. Por esto, los siguientes dos comandos tienen significados completamente diferentes:

      shell> mysql -ptest
      shell> mysql -p test

  El primer comando le dice a mysql que utilice la contraseña `test`, pero no indica una base de datos por defecto. El segundo le dice a mysql que solicite la contraseña y que utilice `test` como base de datos por defecto.

Algunas opciones controlan comportamientos que deben habilitarse o deshabilitarse. Por ejemplo, el cliente mysql soporta una opción `--column-names` que determina si se mostrará o no una fila con los nombres de cada columna al principio de los resultados de una consulta. Por defecto, esta opción se encuentra habilitada. Sin embargo, en algunos casos se podria desear que permanezca inhabilitada, por ejemplo cuando la salida producida por mysql debe ser enviada a otro programa que espera sólo datos y no una linea inicial de encabezados.

Para deshabilitar los nombres de columnas, se especifica la opción empleando cualquiera de estas formas:

    --disable-column-names
    --skip-column-names
    --column-names=0

Los prefijos `--disable` y `--skip` y el sufijo `=0` tienen el mismo efecto: deshabilitar la opción.

El modo “enabled” (habilitado) de la opción puede ser especificado en cualquiera de estas formas:

    --column-names
    --enable-column-names
    --column-names=1

Si una opción se antecede con el prefijo `--loose`, el programa no terminará con un error si no es capaz de reconocer la opción, en lugar de ello emitirá una advertencia:

    shell> mysql --loose-no-such-option
    mysql: WARNING: unknown option '--no-such-option'

El prefijo `--loose` puede ser útil cuando se ejecutan programas pertenecientes a múltiples versiones de MySQL en el mismo ordenador. Es particularmente útil cuando se utiliza un fichero de opciones. Una opción que puede no ser reconocida por todas las versiones de un programa, se antecede con el prefijo `--loose` (o bien `loose` en el caso de un fichero de opciones). Aquellas versiones de un programa que no reconozcan la opción emitirán una advertencia y la ignorarán. Nota: Esta estrategia requiere que las versiones involucradas sean la 4.0.2 o posteriores, dado que antes de esa versión no existía el prefijo `--loose`.

Otra opción que puede ser ocasionalmente útil con mysql es `-e` o `--execute`, la cual se utiliza para enviar sentencias SQL al servidor. Las sentencias deben estar colocadas entre comillas (dobles o simples). No obstante, si se desea incluir dentro de la consulta valores colocados entre comillas, habría que emplear comillas dobles para delimitar la consulta y simples para los valores en su interior. Cuando se utiliza esta opción, mysql retorna al prompt del intérprete de comandos inmediatamente después de ejecutar la sentencia.

Por ejemplo, para obtener una lista de cuentas de usuario, puede hacerse lo siguiente:

    shell> mysql -u root -p -e "SELECT User, Host FROM user" mysql
    Enter password: ******
    +------+-----------+
    | User | Host      |
    +------+-----------+
    |      | gigan     |
    | root | gigan     |
    |      | localhost |
    | jon  | localhost |
    | root | localhost |
    +------+-----------+
    shell>

Observe que el nombre de la base de datos `mysql` fue pasado como un argumento separado. Sin embargo, la misma consulta se hubiera ejecutado indicando mysql -u root -p -e "SELECT User, Host FROM mysql.user" en el intérprete de comandos.

De este modo se pueden ejecutar múltiples sentencias SQL, si se las separa con punto y coma:

    shell> mysql -u root -p --execute="SELECT Name FROM Country WHERE Name LIKE 'AU%';SELECT COUNT(*) FROM City" world
    Enter password: ******
    +-----------+
    | Name      |
    +-----------+
    | Australia |
    | Austria   |
    +-----------+
    +----------+
    | COUNT(*) |
    +----------+
    |     4079 |
    +----------+

Observe que la forma larga (`--execute`) debe ser seguida por un signo igual(`=`).

La opción `-e` puede usarse del mismo modo para pasar comandos al cliente de administración para MySQL Cluster ndb_mgm. Consulte Sección 16.3.6, “Apagado y encendido seguros” para ver un ejemplo.

### 4.3.2. Usar ficheros de opciones

Los programas MySQL pueden leer opciones de inicio desde ficheros de opciones (también llamados a veces ficheros de configuración). Los ficheros de opciones porporcionan una forma conveniente de especificar opciones comúnmente usadas sin que sea necesario ingresarlas en la línea de comandos cada vez que se ejecuta el programa.

Los siguientes programas soportan ficheros de opciones: myisamchk, myisampack, mysql, mysql.server, mysqladmin, mysqlbinlog, mysqlcc, mysqlcheck, mysqld_safe, mysqldump, mysqld, mysqlhotcopy, mysqlimport, y mysqlshow.

Nota: el uso de ficheros de opciones con programas de MySQL Cluster se cubre en Sección 16.4, “Configuración de MySQL Cluster”.

En Windows, los programas MySQL leen sus opciones de inicio en los siguientes ficheros:

Fichero | Contenido
``WINDIR`\my.ini` | Opciones globales
`C:\my.cnf` | Opciones globales
``INSTALLDIR`\my.ini` | Opciones globales
`defaults-extra-file` | El archivo especificado con `--defaults-extra-file=`ruta``, si existe.

`WINDIR` representa la ubicación del directorio Windows. Por lo general, es `C:\WINDOWS` o `C:\WINNT`. Se puede determinar la localización exacta a través del valor de la variable de entorno `WINDIR` utilizando el siguiente comando:

    C:\> echo %WINDIR%

`INSTALLDIR` representa el directorio de instalación de MySQL. Este es generalmente `C:\`PROGRAMDIR`\MySQL\MySQL 5.0 Server`, donde `PROGRAMDIR` representa el directorio de programas (usualmente `Archivos de Programa` en versiones de Windows en español), donde se instaló MySQL 5.0 mediante los asistentes de instalación y configuración. Consulte Sección 2.3.5.14, “Dónde está el fichero my.ini”.

En Unix, los programas MySQL leen sus opciones de inicio en los siguientes ficheros:

Fichero | Contenido
`/etc/my.cnf` | Opciones globales
`$MYSQL_HOME/my.cnf` | Opciones específicas del servidor
`defaults-extra-file` | El archivo especificado con `--defaults-extra-file=`ruta``, si existe.
`~/.my.cnf` | Opciones específicas del usuario

`MYSQL_HOME` es una variable de entorno que contiene la ruta al directorio donde reside el fichero `my.cnf` específico del servidor. (Este era `DATADIR` anteriormente a MySQL versión 5.0.3.)

Si `MYSQL_HOME` no tiene un valor establecido y hay un fichero `my.cnf` en `DATADIR` y no hay un fichero `my.cnf` en `BASEDIR`, `mysqld_safe` establece el valor de `MYSQL_HOME` en `DATADIR`. De otro modo, si `MYSQL_HOME` no tiene un valor establecido y no hay un fichero `my.cnf` en `DATADIR`, entonces `mysqld_safe` establece el valor de `MYSQL_HOME` en `BASEDIR`.

Generalmente es `/usr/local/mysql/data` para una instalación binaria o `/usr/local/var` para una instalación de código fuente. Observe que se trata de la ubicación del directorio de datos que se indicó al momento de la configuración, no de la especificada con `--datadir` cuando se inicia mysqld. El uso de `--datadir` no tiene efecto sobre el lugar donde el servidor busca los ficheros de opciones, porque esta búsqueda se produce antes de procesar cualquier argumento de línea de comandos.

MySQL busca ficheros de opciones exactamente en el orden descripto en la tabla y lee cualquiera que exista. Si se desea utilizar un fichero de opciones que no existe, se lo debe crear con un editor de texto plano. De existir múltiples ficheros de opciones, las opciones leidas en último lugar prevalecen sobre las anteriores.

Nota: En plataformas Unix, MySQL ignorará todo fichero de configuración que tenga permiso world-writable (esto es, modificable por todos los usuarios). Esto ha sido implementado intencionalmente como medida de seguridad.

Cualquier opción en formato de nombre largo que pueda suministrarse en la línea de comandos al ejecutar un programa MySQL puede ser colocada también en un fichero de opciones. Para obtener la lista de opciones disponibles para un programa determinado, el mismo debe ejecutarse con la opción `--help`.

La sintaxis para especificar opciones en un fichero es similar a cuando se hace en la línea de comandos, con la excepción de que se deben omitir los dos guiones iniciales.Por ejemplo, `--quick` o `--host=localhost` en la linea de comandos debería especificarse como `quick` o `host=localhost` en un fichero de opciones. Para indicar una opción de la forma `--loose-`opt_name`` en un fichero, debe escribirse como `loose-`opt_name``.

Las lineas vacías de los ficheros de opciones se ignoran. Las líneas no vacías pueden tomar cualquiera de las siguientes formas:

- `#`comentario``, `;`comentario``

  Las líneas de comentario comienzan con '`#`' o '`;`'. Un comentario '`#`' puede aparecer incluso en el medio de una linea.

- `[`grupo`]`

  `grupo` es el nombre del programa o grupo para el cual se desea establecer opciones. Después de una linea de este tipo, cualquier linea `opción` o `set-variable` se aplicará a ese grupo hasta el final del fichero o hasta que se encuentre otra línea `grupo`.

- ``opción``

  Equivale a `--`opción`` en la línea de comandos.

- ``opción`=`valor``

  Equivale a `--`opción`=`valor`` en la línea de comandos. En un fichero de opciones está permitido colocar espacios a ambos lados del carácter '`=`', algo que no es posible en la línea de comandos. En MySQL 5.0 se puede encerrar el valor entre comillas simples o dobles. Esto es útil si el valor contiene un carácter como comentario '`#`' o espacios en blanco.

Los espacios en blanco sobrantes son automáticamente eliminados de los nombres de opciones y valores. se pueden utilizar las secuencias de escape '`\b`', '`\t`', '`\n`', '`\r`', '`\\`', y '`\s`' al especificar el valor de una opción si es necesario representar los caracteres backspace, tab, salto de linea, retorno de carro y espacio.

En Windows, si el valor de una opción representa una ruta a un directorio o un fichero, se debería especificar el valor utilizando '`/`' en lugar '`\`' como separador. Si se emplea '`\`', debe duplicarse y poner '`\\`', puesto que '`\`' es el caracter de escape en MySQL.

Si el nombre de un grupo es igual que el de un programa, las opciones en el grupo se aplicarán específicamente a ese programa.

El grupo de opciones `[client]` es leido por todos los programas clientes (pero no por mysqld). Esto permite especificar opciones aplicables a todos los clientes. Por ejemplo, `[client]` es el grupo perfecto para indicar la contraseña que se utiliza para conectarse al server. (Pero es necesario asegurarse que el fichero de opciones es accesible para lectura y escritura solamente por Usted, de modo que otras personas no puedan conocer la contraseña). Una opción no debe colocarse en el grupo `[client]` a menos que sea reconocida por todos los programas cliente que se utilizan. Los programas que no la soporten terminarán después de mostrar un mensaje de error si se los intenta ejecutar.

A partir de MySQL 5.0.4 en la serie 5.0, es posible emplear directivas `!include` en los ficheros de opciones para incluir ficheros específicos y `!includedir` para incluir directorios Por ejemplo, para incluir el fichero `/home/mydir/myopt.cnf`, se puede usar lo siguiente:

    !include /home/me/myopt.cnf

Para buscar en el directorio `/home/mydir` todos los ficheros con extensión `.cnf` y leerlos como ficheros de opciones, se debería utilizar:

    !includedir /home/mydir

Observe que estas opciones son específicas de cada sección. Por ejemplo, suponga que fuera a utilizar en `my.cnf` algo como lo siguiente:

    [mysqld]
    !include /home/mydir/myopt.cnf

En ese caso, el fichero `myopt.cnf` sólo sería procesado por el servidor, y la directiva `!include` sería ignorada por cualquier aplicación cliente. Sin embargo, si empleara:

    [mysqldump]
    !includedir /home/mydir/my-dump-options

entonces el directorio `/home/mydir/my-dump-options` sería verificado en busca de ficheros de opciones con extensión `.cnf` únicamente por mysqldump y no por el servidor o por otras aplicaciones cliente.

Nota: En la actualidad, cualquier fichero que deba ser encontrado e incluido al usar la directiva `!includedir` debe tener en su nombre la extensión `.cnf`. En Windows, esta directiva también verifica en busca de ficheros con extensión `.ini`.

En la versión 4.0.14 de MySQL y posteriores, si se desea crear un grupo de opciones que deba ser leido únicamente por una versión específica de mysqld, se puede hacer dando a los grupos de opciones nombres como los siguientes: `[mysqld-4.0]`, `[mysqld-4.1]`, `[mysqld-5.0]`, y así sucesivamente. El siguiente grupo indica que la opción `--new` debería ser aplicada sólo por servidores de bases de datos MySQL versión 5.0.x:

    [mysqld-5.0]
    new

Aquí hay un fichero de opciones globales típico:

    [client]
    port=3306
    socket=/tmp/mysql.sock

    [mysqld]
    port=3306
    socket=/tmp/mysql.sock
    key_buffer_size=16M
    max_allowed_packet=8M

    [mysqldump]
    quick

El fichero de opciones anterior utiliza la sintaxis ``var_name`=`value`` para las líneas que establecen los valores de las variables `key_buffer_size` y `max_allowed_packet`.

Este es un fichero de opciones de usuario típico:

    [client]
    # El siguiente password se enviará a todos los clientes MySQL estándar
    password="my_password"

    [mysql]
    no-auto-rehash
    connect_timeout=2

    [mysqlhotcopy]
    interactive-timeout

Si tiene una distribución de código fuente, podrá encontrar ficheros de opciones de ejemplo llamados `my-`xxxx`.cnf` en el directorio `support-files`. Si tiene una distribución binaria, busque en el directorio `support-files` bajo el directorio de instalación de MySQL. En Windows, los ficheros de opciones de ejemplo también se encuentran en el directorio de instalación de MySQL. (vea anteriormente en esta sección o Capítulo 2, Instalar MySQL si no sabe dónde se encuentra este directorio). Actualmente hay ficheros de opciones para sistemas pequeños, medios, grandes y muy grandes. Para experimentar con uno de estos ficheros, se lo debe copiar como `C:\my.cnf` en Windows o como `.my.cnf` en el directorio home en Unix.

Nota: La extensión `.cnf` de los ficheros de opciones podría no mostrarse en Windows

Todos los programas MySQL que soportan ficheros de opciones manejan las siguientes opciones de línea de comandos:

- `--no-defaults`

  No lee ningún fichero de opciones.

- `--print-defaults`

  Imprime el nombre del programa y todas las opciones que obtiene desde los ficheros de opciones.

- `--defaults-file=`path_name``

  Utiliza solamente el fichero de opciones especificado. `path_name` es la ruta completa al fichero.

- `--defaults-extra-file=`path_name``

  Utiliza el fichero de opciones especificado, lo procesa luego del fichero global de opciones pero antes del fichero de opciones del usuario. `path_name` es la ruta completa al fichero.

Para funcionar correctamente, cada una de estas opciones debe colocarse en la línea de comandos inmediatamente a continuación del nombre del comando, a excepción de `--print-defaults` que puede aparecer luego de `--defaults-file` o `--defaults-extra-file`.

En los scripts del shell puede utilizar el programa my_print_defaults para procesar ficheros de opciones. El siguente ejemplo muestra la salida que my_print_defaults produciría al solicitarle que muestre las opciones halladas en los grupos `[client]` y `[mysql]`:

    shell> my_print_defaults client mysql
    --port=3306
    --socket=/tmp/mysql.sock
    --no-auto-rehash

Nota para desarrolladores: El manejo de ficheros de opciones está implementado en la librería cliente C simplemente a través del procesamiento de todas las opciones coincidentes (esto es, opciones en el grupo apropiado) antes que cualquier argumento de la línea de comandos. Esto funciona bien con programas que emplean la última aparición de una opción especificada múltiples veces. Si se tiene un programa C o C++ que maneja opciones especificadas múltiples veces pero que no lee ficheros de opciones, se necesita agregar solamente dos lineas para darle esa capacidad. Examine el código fuente de cualquiera de los programas cliente estándar de MySQL para ver cómo se hace.

Varias otras interfaces con MySQL pertenecientes a otros lenguajes se basan en la librería cliente de C, y algunas de ellas proporcionan una forma de acceder al contenido de ficheros de opciones. Esto incluye a Perl y Python. Consulte la documentación de su interface preferida para más detalles.

### 4.3.3. Usar variables de entorno para especificar opciones

Para especificar una opción empleando una variable de entorno, se establece el valor de la variable usando la sintaxis apropiada del procesador de comandos. Por ejemplo, en Windows o NetWare se establece la variable `USER` para indicar el nombre de la cuenta MySQL. Para hacerlo, se usa esta sintaxis:

    SET USER=your_name

La sintaxis en Unix depende del shell. En el supuesto de que se quisiera especificar el número de puerto TCP/IP empleando la variable `MYSQL_TCP_PORT`, la sintaxis típica (tal como se hace en sh, `bash`, zsh, etc.) es la siguiente:

    MYSQL_TCP_PORT=3306
    export MYSQL_TCP_PORT

El primer comando establece el valor de la variable, y el comando `export` exporta la variable hacia el entorno del shell de forma que su valor sea accesible a MySQL y otros procesos.

csh y tcsh son un caso similar. Cuando se ejecuta estos shells, se debe usar setenv para que el valor de la variable esté disponible para el entorno:

    setenv MYSQL_TCP_PORT 3306

El comando que establece el valor de las variables de entorno puede ejecutarse en el intérprete de comandos para que tenga efecto inmediatamente. Estos valores existen hasta que se cierra la sesión de usuario. Para que los valores tomen efecto cada vez que se inicia sesión, deben ubicarse los comandos en un fichero de inicio que el intérprete de comandos lea en cada arranque. Algunos ficheros de inicio típicos son `AUTOEXEC.BAT` para Windows, `.bash_profile` para bash, o `.tcshrc` para tcsh. Consulte la documentación de su intérprete de comandos para detalles más específicos.

En Apéndice E, Variables de entorno se listan todas las variables de entorno que afectan la operación de los programas MySQL.

### 4.3.4. Utilización de opciones para establecer variables de programa

Muchos programas MySQL tienen variables internas que pueden ser establecidas en tiempo de ejecución. En MySQL 5.0, las variables de los programas reciben un valor del mismo modo que cualquier otra opción de nombre largo que tome valores. Por ejemplo, mysql tiene una variable `max_allowed_packet` que controla el máximo tamaño de su buffer de comunicación. Para establecer el valor de la variable `max_allowed_packet` de mysql en 16MB, use cualquiera de los siguientes comandos:

    shell> mysql --max_allowed_packet=16777216
    shell> mysql --max_allowed_packet=16M

El primer comando especifica el valor en bytes. El segundo especifica el valor en megabytes. Los valores de las variables pueden tener un sufijo `K`, `M`, o `G` (ya sea en mayúsculas o minúsculas) para indicar la unidad, que puede ser kilobytes, megabytes, o gigabytes.

En un fichero de opciones, la variable se coloca sin precederla con dos guiones:

    [mysql]
    max_allowed_packet=16777216

O bien:

    [mysql]
    max_allowed_packet=16M

Si lo prefiere, los caracteres de subrayado en una variable pueden cambiarse por guiones:

Nota: La antigua sintaxis `--set-variable = `opcion`=`valor`` aún se reconoce en MySQL 5.0, pero está obsoleta

Algunas variables del servidor pueden recibir valores en tiempo de ejecución. Para más detalles, consulte Sección 5.3.3.1, “Variables de sistema dinámicas”.

Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

Anterior |  | Siguiente
Capítulo 3. Curso (tutorial) de MySQL | Inicio | Capítulo 5. Administración de bases de datos