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_name
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
--
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
para las líneas que establecen los valores de las variables
var_name
=value
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-
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.