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 | 
|  | Opciones globales | 
| C:\my.cnf | Opciones globales | 
|  | Opciones globales | 
| defaults-extra-file | El archivo especificado con --defaults-extra-file=,
                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:\, donde
        PROGRAMDIR\MySQL\MySQL
        5.0 ServerPROGRAMDIR 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=,
                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- en
        un fichero, debe escribirse como
        opt_nameloose-.
      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
            -- en la
            línea de comandos.
          opción
            opción=valor
            Equivale a
            --
            en la línea de comandos. En un fichero de opciones está
            permitido colocar espacios a ambos lados del carácter
            'opción=valor=', 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=valuekey_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- en
        el directorio xxxx.cnfsupport-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.
É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.

