hosting y dominios

Capítulo 5. Administración de bases de datos

Tabla de contenidos

5.1. El servidor MySQL y scripts de arranque del servidor
5.1.1. Panorámica de los programas scripts y las utilidades del lado del servidor (server-side)
5.1.2. El servidor extendido de MySQL mysqld-max
5.1.3. El script de arranque del servidor mysqld_safe
5.1.4. El script mysql.server para el arranque del servidor
5.1.5. El programa mysqld_multi para gestionar múltiples servidores MySQL
5.2. El gestor de instancias de MySQL
5.2.1. Arrancar el servidor MySQL con el gestor de instancias MySQL
5.2.2. Conexión al gestor de instancias de MySQL y creación de cuentas de usuario
5.2.3. Opciones de los comandos del gestor de instancias MySQL
5.2.4. Ficheros de configuración del gestor de instancias de MySQL
5.2.5. Los comandos que reconoce el gestor de instancias de MySQL
5.3. Configuración del servidor MySQL
5.3.1. Opciones del comando mysqld
5.3.2. El modo SQL del servidor
5.3.3. Variables de sistema del servidor
5.3.4. Variables de estado del servidor
5.4. El proceso de cierre del servidor MySQL
5.5. Cuestiones de seguridad general
5.5.1. Guía de seguridad general
5.5.2. Hacer que MySQL sea seguro contra ataques
5.5.3. Opciones de arranque para mysqld relacionadas con la seguridad
5.5.4. Cuestiones relacionadas con la seguridad y LOAD DATA LOCAL
5.6. El sistema de privilegios de acceso de MySQL
5.6.1. Qué hace el sistema de privilegios
5.6.2. Cómo funciona el sistema de privilegios
5.6.3. Privilegios de los que provee MySQL
5.6.4. Conectarse al servidor MySQL
5.6.5. Control de acceso, nivel 1: Comprobación de la conexión
5.6.6. Control de acceso, nivel 2: comprobación de solicitudes
5.6.7. Cuándo tienen efecto los camios de privilegios
5.6.8. Causas de errores Access denied
5.6.9. Hashing de contraseñas en MySQL 4.1
5.7. Gestión de la cuenta de usuario MySQL
5.7.1. Nombres de usuario y contraseñas de MySQL
5.7.2. Añadir nuevas cuentas de usuario a MySQL
5.7.3. Eliminar cuentas de usuario de MySQL
5.7.4. Limitar recursos de cuentas
5.7.5. Asignar contraseñas a cuentas
5.7.6. Guardar una contraseña de forma segura
5.7.7. Usar conexiones seguras
5.8. Prevención de desastres y recuperaciones
5.8.1. Copias de seguridad de bases de datos
5.8.2. Ejemplo de estrategia de copias de seguridad y recuperación
5.8.3. Mantenimiento de tablas y recuperación de un fallo catastrófico (crash)
5.8.4. Organizar un programa de mantenimiento de tablas
5.8.5. Obtener información acerca de una tabla
5.9. Uso internacional y localización de MySQL
5.9.1. El conjunto de caracteres utilizado para datos y ordenación
5.9.2. Escoger el idioma de los mensajes de error
5.9.3. Añadir un conjunto de caracteres nuevo
5.9.4. Los vectores de definición de caracteres
5.9.5. Soporte para colación de cadenas de caracteres
5.9.6. Soporte de caracteres multi-byte
5.9.7. Problemas con conjuntos de caracteres
5.9.8. Soporte de zonas horarias en el servidor MySQL
5.10. Los ficheros de registro (log) de MySQL
5.10.1. El registro de errroes (Error Log)
5.10.2. El registro general de consultas
5.10.3. El registro binario (Binary Log)
5.10.4. El registro de consultas lentas (Slow Query Log)
5.10.5. Mantenimiento de ficheros de registro (log)
5.11. Ejecutar más de un servidor MySQL en la misma máquina
5.11.1. Ejecutar varios servidores en Windows
5.11.2. Ejecutar varios servidores en Unix
5.11.3. Utilización de programas cliente en un entorno de múltiples servidores
5.12. La caché de consultas de MySQL
5.12.1. Cómo opera la caché de consultas
5.12.2. Opciones de SELECT para la caché de consultas
5.12.3. Configuración de la caché de consultas
5.12.4. Estado y mantenimiento de la caché de consultas

Este capítulo cubre tópicos que tratan la administración de una instalación de MySQL, como configurar el servidor, administrar cuentas de usuario y realizar copias de seguridad.

5.1. El servidor MySQL y scripts de arranque del servidor

MySQL server, mysqld, es el programa principal que realiza la mayoría del trabajo en una instalación MySQL. El servidor está acompañado por varios scripts que realizan operaciones de inicialización cuando instala MySQL o se tratan de programas de ayuda para asistirle en la inicialización y parada del servidor.

Esta sección proporciona una visión global del servidor y de los programas relacionados, e información acerca de los scripts de inicialización del servidor. La información acerca de configurar el servidor se proporciona en Sección 5.3, “Configuración del servidor MySQL”.

5.1.1. Panorámica de los programas scripts y las utilidades del lado del servidor (server-side)

Todos los programas MySQL aceptan diferentes opciones. Sin embargo, cada programa MySQL proporciona una opción --help que puede usar para obtener una descripción de las opciones del programa. Por ejemplo, pruebe mysqld --help.

Puede cambiar las opciones por defecto en todos los programas estándard especificando opciones en la línea de comandos o en un fichero de opciones. Sección 4.3, “Especificar opciones de programa”.

La siguiente lista describe brevemente MySQL server y sus programas relacionados:

Hay otros programas que también se ejecutan en la máquina del servidor:

5.1.2. El servidor extendido de MySQL mysqld-max

El servidor MySQL-Maxk es una versión del servidor MySQL mysqld compilada para añadir características adicionales.

La distribución a usar depende de la plataforma:

  • Para Windows, las distribuciones binarias de MySQL incluyen ambos servidores (mysqld.exe) y el servidor MySQL-Max (mysqld-max.exe), por lo que no es necesario adquirir ninguna distribución especial. Símplemente use una distribución normal para Windows, disponible en http://dev.mysql.com/downloads/. Consulte Sección 2.3, “Instalar MySQL en Windows”.

  • Para Linux, si instala MySQL utilizando una distribución RPM, use el RPM MySQL-server en primer lugar para instalar una versión estándard del servidor llamada mysqld. A continuación use el RPM MySQL-Max para instalar el servidor llamado mysqld-max. El RPM MySQL-Max presupone que el RPM con el servidor normal está instalado. Consulte Sección 2.4, “Instalar MySQL en Linux” para más información sobre los paquetes RPM para Linux.

  • Todas las otras distribuciones MySQL-Max contienen un único servidor llamado mysqld pero que tiene las características adicionales incluídas.

Puede encontrar los binarios para MySQL-Max en la página Web de MySQL AB en http://dev.mysql.com/downloads/.

MySQL AB compila el servidor MySQL-Max usando las siguientes opciones de configure:

  • --with-server-suffix=-max

    Esta opción añade un sufijo -max a la cadena de caracteres mysqld de la versión.

  • --with-innodb

    Esta opción activa el soporte para el motor de almacenamiento InnoDB. Los servidores MySQL-Max siempre incluyen soporte para InnoDB . Desde MySQL 4.0 en adelante, se incluye por defecto InnoDB en todas las distribuciones binarias, por lo que no necesita un servidor MySQL-Max simplemente para obtener soporte para InnoDB.

  • --with-bdb

    Esta opción activa el soporte para el motor de almacenamiento Berkeley DB (BDB).

  • USE_SYMDIR

    Esta definición está activada para activar el soporte para links simbólicos en Windows. En MySQL 5.0, el soporte para links simbólicos está disponible para todos los servidores Windows, así que un servidor Max no es necesario para aprovechar esta característica.

  • --with-ndb-cluster

    Esta opción activa el soporte para el motor de almacenamiento NDB Cluster . Actualmente (como en5.0.9-beta), el Cluster se soporta en Linux, Solaris, y Mac OS X solamente. Algunos usuarios han reportado éxitos al utilizar MySQL Cluster compilado de las fuentes en sistemas operativos basados en BSD, pero no están soportados oficialmente de momento.

Las distribuciones binarias de MySQL-Max son útiles para aquéllos que quieran instalar programas precompilados. Si compila MySQL a partir de una distribución fuente, puede construir su propio servidor de estilo Max activando las mismas características en tiempo de configuración que usan las distribuciones binarias de MySQL-Max al ser creadas.

Los servidores MySQL-Max incluyen el motor de almacenamiento BerkeleyDB (BDB) cuando es posible, pero no todas las plataformas soportan BDB.

Los servidores MySQL-Max para Solaris, Mac OS X, y Linux (en la mayoría de plataformas) incluyen soporte para el motor de almacenamiento NDB Cluster . Tenga en cuenta que el servidor debe reiniciarse con la opción ndbcluster para ejecutar el servidor como parte de un MySQL Cluster. (Para más detalles, consulte Sección 16.4, “Configuración de MySQL Cluster”.)

La siguiente tabla muestra en qué plataformas los binarios de MySQL-Max incluyen soporte para BDB y/o NDB Cluster:

SistemaSoporte BDBSoporte NDB
AIX 4.3NN
HP-UX 11.0NN
Linux-AlphaNS
Linux-IA-64NN
Linux-IntelSS
Mac OS XNN
NetWareNN
SCO OSR5SN
Solaris-SPARCSS
Solaris-IntelNS
UnixWareSN
Windows NT/2000/XPSN

Para ver los motores de almacenamiento que soporta su servidor, ejecute el siguiente comando:

mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+
| Engine     | Support | Comment                                                        |
+------------+---------+----------------------------------------------------------------+
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      |
| HEAP       | YES     | Alias for MEMORY                                               |
| MERGE      | YES     | Collection of identical MyISAM tables                          |
| MRG_MYISAM | YES     | Alias for MERGE                                                |
| ISAM       | NO      | Obsolete storage engine, now replaced by MyISAM                |
| MRG_ISAM   | NO      | Obsolete storage engine, now replaced by MERGE                 |
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     |
| INNOBASE   | YES     | Alias for INNODB                                               |
| BDB        | YES     | Supports transactions and page-level locking                   |
| BERKELEYDB | YES     | Alias for BDB                                                  |
| NDBCLUSTER | NO      | Clustered, fault-tolerant, memory-based tables                 |
| NDB        | NO      | Alias for NDBCLUSTER                                           |
| EXAMPLE    | NO      | Example storage engine                                         |
| ARCHIVE    | YES     | Archive storage engine                                         |
| CSV        | NO      | CSV storage engine                                             |
| FEDERATED  | YES     | Federated MySQL storage engine                                 |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) |
+------------+---------+----------------------------------------------------------------+
18 rows in set (0.00 sec)

(Consulte también Sección 13.5.4.8, “Sintaxis de SHOW ENGINES.)

Antes de MySQL 4.1.2, SHOW ENGINES no está disponible. Use el siguiente comando en su lugar y compruebe que el valor de la variable para el motor de almacenamiento en que está interesado:

mysql> SHOW VARIABLES LIKE 'have%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| have_archive          | YES   |
| have_bdb              | YES   |
| have_blackhole_engine | YES   |
| have_compress         | YES   |
| have_crypt            | NO    |
| have_csv              | NO    |
| have_example_engine   | NO    |
| have_federated_engine | YES   |
| have_geometry         | YES   |
| have_innodb           | YES   |
| have_isam             | NO    |
| have_ndbcluster       | NO    |
| have_openssl          | YES   |
| have_query_cache      | YES   |
| have_raid             | NO    |
| have_rtree_keys       | YES   |
| have_symlink          | YES   |
+-----------------------+-------+
17 rows in set (0.06 sec)

La salida precisa de estos comandos SHOW variará en función de la versión de MySQL usada (y las características que haya activadas). Los valores en la segunda columna indican el nivel de soporte por parte del servidor para cada característica, como se muestra:

ValorSignificado
YESLa característica se soporta y está activa.
NOLa característica no se soporta.
DISABLEDLa característica se soporta pero no está activa.

Un valor NO significa que el servidor está compilado sin soporte para la característica, por lo que no puede activarse en tiempo de ejecución.

Un valor DISABLED aparece porque el servidor se arrancó con una opción que deshabilita la característica, o porque no todas las opciones requeridas para activarla se han dado. En el último caso, el fichero de log de error host_name.err debería contener la razón indicando porqué la opción está deshabilitada.

Puede ver el mensaje DISABLED para los motores de almacenamiento InnoDB, BDB, o ISAM si el servidor está compilado para soportarlos pero se arrancó con las opciones --skip-innodb, --skip-bdb, o --skip-isam en tiempo de ejecución.

Todos los servidores MySQL soportan tablas MyISAM , ya que MyISAM es el motor de almacenamiento por defecto.

5.1.3. El script de arranque del servidor mysqld_safe

mysqld_safe es la manera recomendada de iniciar mysqld un servidor en Unix y NetWare mysqld_safe añade algunas características de seguridad como reiniciar el servidor cuando ocurre un error y guardar la información en tiempo de ejecución en un registro de errores. Los comportamientos especificos de NetWare se mencionan más adelante en esta sección.

Nota: Para preservar la compatibilidad con antiguas versiones de MySQL, las distribuciones binarias de MySQL todavía incluyen safe_mysqld como en enlace simbólico a mysqld_safe. Aún asi, no se debería confiar en esto ya que con toda certeza será eliminado en el futuro.

Por defecto, mysqld_safe intenta lanzar un ejecutable llamado mysqld-max si existe, o mysqld en otro caso. Deben tenerse en cuenta las implicaciones de este comportamiento:

  • En Linux, el paquete RPM de MySQL-Max se basa en este comportamiento de mysqld_safe. El RPM instala un ejecutable llamado mysqld-max, que causa que mysqld_safe use automáticamente ese ejecutable a partir de ese momento.

  • Si se instala una distribucion MySQL-Max que incluye un servidor llamado mysqld-max, y después se actualiza a una version no-Max de MySQL, mysqld_safe todavía intentará ejecutar el viejo servidor mysqld-max. Si se realiza una actualizacion tal, se debe eliminar manualmente el viejo servidor mysqld-max para asegurarse de que mysqld_safe ejecuta el nuevo servidor mysqld.

Para reemplazar el comportamiento por defecto y especificar explícitamente qué servidor se quiere ejecutar, se debe especificar la opción --mysqld o la opción --mysqld-version de mysqld_safe.

Muchas de las opciones de mysqld_safe son las mismas que las opciones de mysqld. Consulte Sección 5.3.1, “Opciones del comando mysqld.

Todas las opciones específicas de mysqld_safe en la línea de comandos se pasan a mysqld. Si se desea utilizar alguna opción que es específica de mysqld_safe y que mysqld no soporta, no debe especificarse en la línea de comandos. En vez de eso, debe listarse en el grupo [mysqld_safe] de un archivo de opciones. Consulte Sección 4.3.2, “Usar ficheros de opciones”.

mysqld_safe lee todas las opciones de las secciones [mysqld], [server], y [mysqld_safe] de los archivos de opciones. Por compatibilidad con versiones anteriores, también lee las secciones [safe_mysqld], aunque deben renombrarse dichas secciones a [mysqld_safe] en MySQL 5.0.

mysqld_safe soporta las siguientes opciones:

  • --help

    Muestra un mensaje de ayuda y finaliza. (Añadido en MySQL 5.0.3)

  • --basedir=ruta

    La ruta al directorio de instalacion de MySQL.

  • --core-file-size=tamaño

    El tamaño del archivo de volcado de memoria que mysqld debería ser capaz de crear. El valor de la opción se pasa a ulimit -c.

  • --datadir=ruta

    La ruta al directorio de datos.

  • --defaults-extra-file=ruta

    El nombre de un archivo de opciones para ser leído además de los habituales.

  • --defaults-file=ruta

    El nombre de un archivo de opciones para ser leído en vez de los habituales.

  • --ledir=ruta

    La ruta a el directorio que contiene el programa mysqld. Se utiliza esta opción para indicar explícitamente la localización del servidor.

  • --log-error=ruta

    Escribir el registro de errores en el archivo dado. Consulte Sección 5.10.1, “El registro de errroes (Error Log)”.

  • --mysqld=nombre_prog

    El nombre del programa servidor (en el directorio ledir) que se quiere ejecutar. Esta opción es necesaria si se utiliza la distribución binaria de MySQL pero el directorio de datos está fuera de la distribución binaria.

  • --mysqld-version=sufijo

    Esta opción es similar a la opción --mysqld, pero se especifica únicamente el sufijo para el nombre del programa servidor. El nombre base se asume que es mysqld. Por ejemplo, si se usa --mysqld-version=max, mysqld_safe inicia el programa en el directorio ledir. Si el argumento de --mysqld-version está vacio, mysqld_safe usa mysqld en el directorio ledir.

  • --nice=prioridad

    Se utiliza el programa nice para establecer la prioridad del servidor a un valor dado.

  • --no-defaults

    No leer ningún archivo de opciones.

  • --open-files-limit=número

    El número de ficheros que mysqld debería ser capaz de abrir. El valor de la opción se pasa a ulimit -n. Nótese que se necesita iniciar mysqld_safe como root para que esto funcione correctamente.

  • --pid-file=ruta

    La ruta al archivo de ID del proceso.

  • --port=num_puerto

    El número de puerto a usar cuando se esperan conexiones TCP/IP.

  • --socket=ruta

    El archivo de socket de unix a utilizar para conexiones locales.

  • --timezone=zona

    Establece la variable de ambiente de zona horaria TZ a el valor dado. Consúlte la documentación del sistema operativo para formatos legales de especificación de zonas horarias.

  • --user={nombre_usuario | id_usuario}

    Ejecuta el servidor mysqld como el usuario con nombre nombre_usuario o el ID numérico de usuario id_usuario. (``Usuario'' en este contexto se refiere a una cuenta de login del sistema, no a un usuario MySQL incluído en las tablas grant.)

El script mysqld_safe está escrito de manera que normalmente puede iniciar un servidor que ha sido instalado tanto desde código fuente o desde una distribución binaria de MySQL, aún cuando típicamente estos tipos de distribuciones instalan el servidor en lugares ligeramente diferentes. (Consulte Sección 2.1.5, “Conformación de la instalación”.) mysqld_safe espera que una de las siguientes condiciones sea cierta:

  • El servidor y las bases de datos pueden ser encontradas en una ruta relativa al directorio desde el que mysqld_safe es invocado. Para distribuciones binarias, mysqld_safe busca bajo su directorio de trabajo los directorios bin y data. En distribuciones de código fuente, busca los directorios libexec y var. Esta condición debe cumplirse si se ejecuta mysqld_safe desde el directorio de instalación de MySQL (por ejemplo, /usr/local/mysql para una distribución binaria).

  • Si el servidor y las bases de datos no pueden encontrarse en una ruta relativa al directorio de trabajo, mysqld_safe intenta localizarlos mediante rutas absolutas. /usr/local/libexec y /usr/local/var son localizaciones típicas. Las localizaciones efectivas se determinan por los valores configurados en la distribución en el momento en que fue creada. Deberían ser correctos si MySQL está instalado en la localización especificada en el momento de la configuración.

Debido a que mysqld_safe trata de encontrar el servidor y las bases de datos de manera relativa a su propio directorio de trabajo, puede instalarse una distribución binaria de MySQL en cualquier lugar, siempre y cuando se ejecute mysqld_safe desde el directorio de instalación de MySQL:

shell> cd directorio_instalacion_mysql
shell> bin/mysqld_safe &

Si mysqld_safe falla, aún cuando ha sido invocado desde el directorio de instalación de MySQL, se pueden especificar las opciones --ledir y --datadir para indicar los directorios en los que el servidor y las bases de datos están dentro del sistema.

Normalmente, no se debería editar el script mysqld_safe. En vez de ello, ha de configurarse mysqld_safe utilizando opciones de línea de comandos u opciones en la sección [mysqld_safe] de un archivo de opciones my.cnf. En casos aislados, podría ser necesario editar mysqld_safe para que inicie el servidor apropiadamente. No obstante, si se hace esto, la versión modificada de mysqld_safe podría ser sobreescrita si se actualiza la versión de MySQL en el futuro, así que debería hacerse una copia de la versión editada que pudiera reinstalarse.

En NetWare, mysqld_safe es un NetWare Loadable Module (NLM) que ha sido portado desde el script original de Unix. Hace lo siguiente:

  1. Ejecuta un número de comprobaciones del sistema y de opciones.

  2. Ejecuta comprobaciones sobre tablas MyISAM.

  3. Provee de una presencia en pantalla a el servidor MySQL.

  4. Inicia mysqld, lo supervisa, y lo reinicia si termina con error.

  5. Envía mensajes de error desde mysqld a el archivo host_name.err en el directorio de datos.

  6. Envía la salida por pantalla de mysqld_safe hacia el archivo host_name.safe en el directorio de datos.

5.1.4. El script mysql.server para el arranque del servidor

Las distribuciones de MySQL en Unix incluyen un script llamado mysql.server. Puede usarse en sistemas tales como Linux y Solaris que usan directorios de ejecución estilo System V para arrancar y parar servicios del sistema. También lo usa el Startup Item de Mac OS X para MySQL.

mysql.server puede encontrarse en el directorio support-files bajo el directorio de instalación de MySQL o en el árbol fuente de MySQL.

Si usa el paquete de Linux RPM para el servidor (MySQL-server-VERSION.rpm), el script mysql.server se instalará en el directorio /etc/init.d con el nombre mysql. No necesita instalarlo manualmente. Consulte Sección 2.4, “Instalar MySQL en Linux” para más información acerca de los paquetes RPM para Linux.

Algunos vendedores proporcionan paquetes RPM que instalan un script de instalación bajo nombres diferentes tales como mysqld.

Si instala MySQL de una distribución fuente o usando un formato binario de distribución que no instala mysql.server automáticamente, puede instalarlo manualmente. Las instrucciones se proporcionan en Sección 2.9.2.2, “Arrancar y parar MySQL automáticamente”.

mysql.server lee opciones de las secciones [mysql.server] y [mysqld] de los ficheros de opciones. (Para compatibilidad con versiones anteriores, también lee las secciones [mysql_server], aunque debe renombrar dichas secciones como [mysql.server] cuando use MySQL 5.0.)

5.1.5. El programa mysqld_multi para gestionar múltiples servidores MySQL

mysqld_multi se utiliza para administrar diversos procesos mysqld que esperan conexiones en diferentes archivos socket en Unix y puertos TCP/IP. Puede arrancar o parar servidores, o reportar su estado actual.

El programa busca grupos llamados [mysqld#] en my.cnf (o en el fichero nombrado por la opción --config-file). # puede ser cualquier entero positivo. Nos referiremos a este número como el número del grupo de opciones en la siguiente discusión, o GNR (N. del T.: acrónimo en ingés). Los números de grupo distinguen grupos de opciones de otros y se usan como argumentos para mysqld_multi para especificar qué servidores quiere arrancar, parar, u obtener un reporte de estatus. Las opciones listadas en esos grupos son las mismas que usaría en el grupo [mysqld] para arranacar mysqld. (Consulte, por ejemplo, Sección 2.9.2.2, “Arrancar y parar MySQL automáticamente”.) Sin embargo, cuando use múltiples servidores es necesario que cada uno use su propio valor para opciones tales como el fichero de socket de Unix y el número del puerto TCP/IP. Para más información sobre qué opciones deben ser únicas por servidor en un entorno de múltiples sevidores, consulte Sección 5.11, “Ejecutar más de un servidor MySQL en la misma máquina”.

Para invocar mysqld_multi, use la siguiente sintaxis:

shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR]...]

start, stop, y report indican qué operaciones desea realizar. Puede realizar la operación designada en un único servidor o en múltiples servidores, dependiendo de la lista GNR que sigue al nombre de la opción. Si no hay ninguna lista, mysqld_multi realiza la operación para todos los servidores en el fichero de opciones.

Cada valor GNR representa un número de grupo de opciones o rango de números de grupo. El valor debe ser un número al final de un nombre de grupo en el fichero de opciones. Por ejemplo, el GNR para un grupo llamado [mysqld17] es 17. Para especificar un rango de números, separe el primero y último número por un guión. El valor GNR 10-13 reperesenta los grupos desde [mysqld10] hasta [mysqld13]. Multiples grupos o rangos de grupos pueden especificarse en la línea de comandos, separados por comas. No deben haber caráceteres de espacios en blanco (espacios o tabuladores) en la lista+ GNR ; cualquier cosa después de un carácter de espacio en blanco se ignora.

Este comando arranca un único servidor usando el grupo de opciones [mysqld17]:

shell> mysqld_multi start 17

Este comando para diversos servidores, usando los grupos de opciones [mysql8] y del [mysqld10] hasta el [mysqld13]:

shell> mysqld_multi stop 8,10-13

Para un ejemplo sobre cómo puede crear un fichero de opciones, use este comando:

shell> mysqld_multi --example

mysqld_multi soporta las siguientes opciones:

  • --config-file=nombre

    Especifique el nombre de un fichero de opciones alternativo. Esto afecta a dónde mysqld_multi busca grupos de opciones [mysqld#] . Sin esta opción todas las opciones se leen del fichero habitual my.cnf. La opción no afecta a dónde mysqld_multi lee sus propias opciones, que siempre se toman del grupo [mysqld_multi] en el fichero habitual my.cnf.

  • --example

    Muestra un fichero de opciones de ejemplo..

  • --help

    Muestra un mensaje de ayuda y sale.

  • --log=nombre

    Especifica el nombre del fichero de log. Si el fichero existe, la salida de log se añade al mismo.

  • --mysqladmin=prog_name

    El binario mysqladmin a usar para parar los servidores.

  • --mysqld=prog_name

    El binario mysqld a usar. Tenga en cuenta que puede especificar mysqld_safe como el valor para esta opción. Las opciones se pasan a mysqld. Sólo asegúrese que tiene el directorio donde se encuentra mysqld en su variable de entorno PATH o fije mysqld_safe.

  • --no-log

    Muestra información del log en el stdout en lugar del fichero de log. Por defecto, la salida va al fichero de log.

  • --password=password

    La constraseña de la cuenta MySQL a usar cuando invoque mysqladmin. Tenga en cuenta que el valor de la contraseña no es opcional para esta opción, no como en otros programas MySQL.

  • --silent

    Desactiva los mensajes de advertencia.

  • --tcp-ip

    Se conecta a cada servidor MySQL via puerto TCP/IP en lugar del fichero socket Unix. (Si un fichero socket no se encuentra, el servidor puede ejecutarse, pero accesible sólo via puerto TCP/IP.) Por defecto, las conexiones se hacen usando un fichero socket Unix. Esta opción afecta las operaciones stop y report.

  • --user=user_name

    El nombre de usuario de la cuenta MySQL a usar al invocar mysqladmin.

  • --verbose

    Es más detallado.

  • --version

    Muestra información sobre la versión y sale.

Apuntes acerca de mysqld_multi:

  • Asegúrese que la cuenta MySQL usada para parar los servidores mysqld (con el programa mysqladmin ) tienen el mismo nombre de usuario y contraseña para cada servidor. También asegúrese que la cuenta tiene el privilegio SHUTDOWN. Si los servidores que quiere administrar tienen distintos nombres de usuario o contraseñas para las cuentas administrativas, puede querer crear una cuenta en cada servidor que tenga el mismo nombre de usuario y contraseña. Por ejemplo, puede inicializar una cuenta común multi_admin ejecutando el siguiente comando en cada servidor:

    shell> mysql -u root -S /tmp/mysql.sock -proot_password
    mysql> GRANT SHUTDOWN ON *.*
        -> TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
    

    Consulte Sección 5.6.2, “Cómo funciona el sistema de privilegios”. Tiene que hacerlo para cada servidor mysqld. Cambie los parámetros de conexión apropiadamente cuando se conecte a cada uno. Tenga en cuenta que la parte de servidor del nombre de la cuenta debe permitirle conectarse como multi_admin desde el servidor desde el que quiere ejecutar mysqld_multi.

  • La opción --pid-file es muy importante si está usando mysqld_safe para arrancar mysqld (por ejemplo, --mysqld=mysqld_safe) Cada mysqld debe tener su propio fichero con el ID de proceso. La ventaja de usar mysqld_safe en lugar de mysqld es que mysqld_safe ``guarda'' su proceso mysqld y lo reinicia si el proceso termina debido a una señal enviada usando kill -9 o por otras razones, tales como un segmentation fault. Por favor, tenga en cuenta que el script mysqld_safe puede requerir que lo arranque desde un lugar determinado. Esto significa que puede tener que cambiar la localización a un cierto directorio antes de ejecutar mysqld_multi. Si tiene problemas arrancando, por favor consulte el script mysqld_safe. Compruebe especialmente las líneas:

    ----------------------------------------------------------------
    MY_PWD=`pwd`
    # Check if we are starting this relative (for the binary release)
    if test -d $MY_PWD/data/mysql -a -f ./share/mysql/english/errmsg.sys -a \
     -x ./bin/mysqld
    ----------------------------------------------------------------
    

    Consulte Sección 5.1.3, “El script de arranque del servidor mysqld_safe. Los chequeos realizados por estas líneas deberían tener éxito, o podría encontrar problemas.

  • El fichero socket de Unix y el puerto TCP/IP deben ser diferentes para cada mysqld.

  • Puede usar la opción --user para mysqld, pero para hacerlo debe ejecutar el script mysqld_multi como el usuario root en Unix. Tener la opción en el fichero de opciones no importa; sólo obtiene una advertencia si no es el súper usuario y los procesos mysqld se inician bajo su propia cuenta Unix.

  • Importante: Asegúrese que el directorio de datos es completamente accesible para todas las cuentas Unix con las que puedea iniciarse el proceso mysqld. No use la cuenta root de Unix para ello, a no ser que sepa lo que hace.

  • Más importante: Antes de usar mysqld_multi aségurese de entender el significado de las opciones que se pasan a los servidores mysqld y porqué quiere tener procesos mysqld separados. Cuidado con los peligros de usar múltipes servidores mysqld con el mismo directorio de datos. Use diferentes directorios de datos, a no ser que sepa lo que hace. Iniciar múltiples servidores con el mismo directorio de datos no proporciona mejor rendimiento en un entorno threaded. Consulte Sección 5.11, “Ejecutar más de un servidor MySQL en la misma máquina”.

El siguiente ejemplo muestra como podría inicializar un fichero de opciones para usar con mysqld_multi. El primer y quinto grupo [mysqld#] se ha omitido intencionadamente del ejemplo para ilustrar que puede tener ``vacíos'' en el fichero de opciones. Esto proporciona una mayor flexibilidad. El order en que los programas mysqld arrancan o se paran depende del order en que aparecen en el fichero de opciones.

# This file should probably be in your home dir (~/.my.cnf)
# or /etc/my.cnf
# Version 2.1 by Jani Tolonen

[mysqld_multi]
mysqld     = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user       = multi_admin
password   = multipass

[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /usr/local/mysql/var2/hostname.pid2
datadir    = /usr/local/mysql/var2
language   = /usr/local/share/mysql/english
user       = john

[mysqld3]
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /usr/local/mysql/var3/hostname.pid3
datadir    = /usr/local/mysql/var3
language   = /usr/local/share/mysql/swedish
user       = monty

[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /usr/local/mysql/var4/hostname.pid4
datadir    = /usr/local/mysql/var4
language   = /usr/local/share/mysql/estonia
user       = tonu

[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /usr/local/mysql/var6/hostname.pid6
datadir    = /usr/local/mysql/var6
language   = /usr/local/share/mysql/japanese
user       = jani

Consulte Sección 4.3.2, “Usar ficheros de opciones”.

5.2. El gestor de instancias de MySQL

Esta sección discute el uso del MySQL Instance Manager (IM). Este es el demonio que corre en el puerto TCP/IP, el cual provee monitoreo y administración de las instancias del servidor de datos MySQL. MySQL Instance Manager está disponible para sistemas operativos basados en Unix.

MySQL Instance Manager se incluye en las distribuciones de MySQL desde la versión 5.0.3, y puede usarse en lugar del script mysqld_safe para arrancar y parar MySQL Server, incluso desde una máquina remota. MySQL Instance Manager implementa la funcionalidad (y la mayoría de la sintaxis) del script mysqld_multi . Una descripción más detallada de MySQL Instance Manager a continuación.

5.2.1. Arrancar el servidor MySQL con el gestor de instancias MySQL

Normalmente, el servidor de bases de datos MySQL se arranca con el script mysql.server, que normalmente reside en el directorio /etc/init.d/ . En MySQL 5.0.3 este script invoca mysqlmanager (el binario de MySQL Instance Manager ) para arrancar MySQL. (En versiones previas de MySQL el script mysqld_safe se usa con este propósito.) A partir de MySQL 5.0.4 el comportamiento del script de inicio ha cambiado de nuevo para incorporar ambos esquemas de inicialización. En la versión 5.0.4, el scrip de arranque usa el antiguo esquema (invocando mysqld_safe) por defecto, pero se puede cambiar la variable use_mysqld_safe en el script a 0 (cero) para usar el MySQL Instance Manager para arranacar un servidor.

El comportamiento del Instance Manager en este caso depende de las opciones dadas en el fichero de configuración de MySQL. Si no hay fichero de configuración, el MySQL Instance Manager crea una instancia llamada mysqld y trata de arrancarla con los valores por defectos (compilados). Esto significa que el IM no puede adivinar la localización de mysqld si no está instalado en la localización por defecto. Si ha instalado MySQL server en una localización no estándard, debe usar un fichero de configuración. Consulte Sección 2.1.5, “Conformación de la instalación”.

Si hay un fichero de configuración, el IM parseará el fichero de configuración en búsqueda de las secciones [mysqld] (P.e. [mysqld], [mysqld1], [mysqld2], etc.) Cada una de esas secciones especifica una instancia. Al arrancar, el IM arrancará todas las instancias encontradas. El IM para todas las instancias al cerrar por defecto.

Tenga en cuenta que hay una opción especial mysqld-path (mysqld-path = <path-to-mysqld-binary>) reconocida sólo por el IM. Use esta variable para que IM conozca dónde reside el binario mysqld. También debe inicializar las opciones basedir y datadir para el servidor.

El típico ciclo de arranque/cierre para un servidor MySQL con el MySQL Instance Manager habilitado es como sigue:

  • El MySQL Instance Manager se arranca con el script /etc/init.d/mysql.

  • El MySQL Instance Manager arranca todas las instancias y las monitoriza.

  • Si una instancia de un servidor cae, el MySQL Instance Manager la reinicia.

  • Si el MySQL Instance Manager se cierra (por ejemplo con el comando /etc/init.d/mysql stop), todas las instancias se apagan con el MySQL Instance Manager.

5.2.2. Conexión al gestor de instancias de MySQL y creación de cuentas de usuario

La comunicación con el MySQL Instance Manager se hace usando el protocolo cliente-servidor de MySQL. Con el mismo, puede conectarse al IM usando el program cliente estándard mysql , así como con la API de C MySQL. El IM soporta la versión del protocolo cliente- servidor MySQL usada por las herramientas de cliente y bibliotecas distribuidas a partir de la versión mysql-4.1.

El IM almacena su información de usuario en un fichero de contraseñas. La localización por defecto para el fichero de contraseñas es /etc/mysqlmanager.passwd

Las entradas para las contraseñas se parecen a las siguiente:

petr:*35110DC9B4D8140F5DE667E28C72DD2597B5C848

Para generar una entrada así debe invocarse IM con la opción --passwd . Entonces puede redirigir la salida a /etc/mysqlmanager.passwd para añadir un nuevo usuario. Un comando de ejemplo a continuación.

./mysqlmanager --passwd >> /etc/mysqlmanager.passwd
Creating record for new user.
Enter user name: mike
Enter password: <password>
Re-type password: <password>

La siguiente línea se añade a /etc/mysqlmanager.passwd:

mike:*00A51F3F48415C7D4E8908980D443C29C69B60C9

Si no hay entradas en el fichero /etc/mysqlmanager.passwd no puede conectarse al IM.

5.2.3. Opciones de los comandos del gestor de instancias MySQL

El MySQL Instance Manager soporta varias opciones de línea de comando. Una breve lista está disponible ejecutando el comando ./mysqlmanager --help . Los siguientes comandos están disponibles:

  • -?, --help

    Muestra la ayuda y sale..

  • --log=name

    Ruta al fichero de log del IM. Se usa con la opción --run-as-service.

  • --pid-file=name

    Fichero Pid a usar. Por defecto es mysqlmanager.pid.

  • --socket=name

    Fichero socket a usar por las conexiones. Por defecto es /tmp/mysqlmanager.sock.

  • -P, --passwd

    Prepara entrada para fichero passwd y salir.

  • --bind-address=name

    Dirección enlazada para usar en conexiones.

  • --port=#

    Número de puerto para usar en conexiones (número de puerto por defecto, asignado por la IANA, es el 2273).

  • --password-file=name

    Busca los usuarios y contraseñas para el Instance Manger aquí. El fichero por defecto es /etc/mysqlmanager.passwd.

  • --default-mysqld-path=name

    Dónde buscar el binario para el MySQL Server si no se proporciona un path en la sección de instancias. Ejemplo: default-mysqld-path = /usr/sbin/mysqld.

  • --monitoring-interval=#

    Intervalo en segundos para monitorizar instancias. El IM tratará de conectar a cada una de las instancias monitorizadas para comprobar si están vivas / no colgadas. En caso de un fallo el IM realizará varios (de hecho muchos) intentos de reiniciar la instancia. Puede desactivar este comportamiento para instancias particulares con la opción nonguarded en la sección de instancia apropiada. Si no se proporciona ningún valor, se usan 20 segundos por defecto.

  • --run-as-service

    Demoniza y arranca el proceso ángel. El proceso ángel es simple y difícil de que falle. Reinicia el IM en caso de fallo.

  • --user=name

    Nombre de usuario para arrancar y ejecutar mysqlmanager. Se recomienda ejecutar mysqlmanager bajo la misma cuenta de usuario usada para ejectuar el servidor mysqld.

  • -V, --version

    Muestra información de la versión y sale.

5.2.4. Ficheros de configuración del gestor de instancias de MySQL

El Instance Manager usa el fichero estándard my.cnf. Usa la sección [manager] para leer opciones para sí mismo y la sección [mysqld] para crear instancias. La sección [manager] contiene algunas de las opciones listadas anteriormente. Un ejemplo de la sección [manager] a continuación:

# MySQL Instance Manager options section
[manager]
default-mysqld-path = /usr/local/mysql/libexec/mysqld
socket=/tmp/manager.sock
pid-file=/tmp/manager.pid
password-file = /home/cps/.mysqlmanager.passwd
monitoring-interval = 2
port = 1999
bind-address = 192.168.1.5

Las secciones de instancias especifican opciones dadas a cada instancia al arrancar. La mayoría son comunes con las opciones de MySQL Server, pero hay algunas específicas para el IM:

  • mysqld-path = <path-to-mysqld-binary>

    La ruta al binario del servidor mysqld.

  • shutdown-delay = #

    Número de segundos que IM debe esperar para que una instancia se cierre. Por defecto son 35 segundos. Cuando acaba el tiempo, IM asume que la instancia está colgada y trata de hacer un kill -9 . Si usa InnoDB con tablas grandes, debe incrementar este valor.

  • nonguarded

    Esta opcion debe activarse si se quiere desactivar la funcionalidad de monitoreo de IM para una instancia concreta.

Diversas secciones de instancias de ejemplo a continuación.

[mysqld]
mysqld-path=/usr/local/mysql/libexec/mysqld
socket=/tmp/mysql.sock
port=3307
server_id=1
skip-stack-trace
core-file
skip-bdb
log-bin
log-error
log=mylog
log-slow-queries

[mysqld2]
nonguarded
port=3308
server_id=2
mysqld-path= /home/cps/mysql/trees/mysql-4.1/sql/mysqld
socket     = /tmp/mysql.sock4
pid-file   = /tmp/hostname.pid4
datadir= /home/cps/mysql_data/data_dir1
language=/home/cps/mysql/trees/mysql-4.1/sql/share/english
log-bin
log=/tmp/fordel.log

5.2.5. Los comandos que reconoce el gestor de instancias de MySQL

Una vez que se ha inicializado un fichero de contraseñas para el MySQL Instance Manager y que el IM está ejecutándose, puede conectarse al mismo. Puede usar la herramienta cliente mysql para conectar a través de la API MySQL estándard. A continuación se muestra la lista de comandos que el MySQL Instance Manager acepta actualmente, con ejemplos.

  • START INSTANCE <instance_name>

    Este comando intenta arrancar una instancia:

    mysql> START INSTANCE mysqld4;
    Query OK, 0 rows affected (0,00 sec)
    
  • STOP INSTANCE <instance_name>

    Esto trata de parar una instancia:

    mysql> STOP INSTANCE mysqld4;
    Query OK, 0 rows affected (0,00 sec)
    
  • SHOW INSTANCES

    Muestra los nombres de todas las intancias cargadas:

    mysql> show instances;
    +---------------+---------+
    | instance_name | status  |
    +---------------+---------+
    | mysqld3       | offline |
    | mysqld4       | online  |
    | mysqld2       | offline |
    +---------------+---------+
    3 rows in set (0,04 sec)
    
  • SHOW INSTANCE STATUS <instance_name>

    Muestra el estado e información de la versión de la instancia seleccionada:

    mysql> SHOW INSTANCE STATUS mysqld3;
    +---------------+--------+---------+
    | instance_name | status | version |
    +---------------+--------+---------+
    | mysqld3       | online | unknown |
    +---------------+--------+---------+
    1 row in set (0.00 sec)
    
  • SHOW INSTANCE OPTIONS <instance_name>

    Muestra las opciones usadas por una instancia:

    mysql> SHOW INSTANCE OPTIONS mysqld3;
    +---------------+---------------------------------------------------+
    | option_name   | value                                             |
    +---------------+---------------------------------------------------+
    | instance_name | mysqld3                                           |
    | mysqld-path   | /home/cps/mysql/trees/mysql-4.1/sql/mysqld        |
    | port          | 3309                                              |
    | socket        | /tmp/mysql.sock3                                  |
    | pid-file      | hostname.pid3                                     |
    | datadir       | /home/cps/mysql_data/data_dir1/                   |
    | language      | /home/cps/mysql/trees/mysql-4.1/sql/share/english |
    +---------------+---------------------------------------------------+
    7 rows in set (0.01 sec)
    
  • SHOW <instance_name> LOG FILES

    El comando poroporciona un listado de todos los ficheros de log usados por la instancia. El conjunto resultado contiene el path al fichero de log y al fichero de configuración (i.e. log=/var/mysql.log), el IM trata de adivinar su ubicación. Si IM no es capaz de localizar el fichero de logs, debe especificarlo explícitamente.

    mysql> SHOW mysqld LOG FILES;
    +-------------+------------------------------------+----------+
    | Logfile     | Path                               | Filesize |
    +-------------+------------------------------------+----------+
    | ERROR LOG   | /home/cps/var/mysql/owlet.err      | 9186     |
    | GENERAL LOG | /home/cps/var/mysql/owlet.log      | 471503   |
    | SLOW LOG    | /home/cps/var/mysql/owlet-slow.log | 4463     |
    +-------------+------------------------------------+----------+
    3 rows in set (0.01 sec)
    
  • SHOW <instance_name> LOG {ERROR | SLOW | GENERAL} size[,offset_from_end]

    Este comando recibe una porción del fichero de log especificado. Ya que la mayoría de usuarios están interesados en los últimos mensajes de log, el parámetro size define el número de bytes que quiere recibir empezando por el final del log. Puede recibir datos del medio del fichero de log especificando el parámetro opcioneal offset_from_end . El siguiente ejemplo recibe 21 bytes de datos, empezando 23 bytes desde el final del fichero de log y acabando 2 bytes al final del fichero de log.:

    mysql> SHOW mysqld LOG GENERAL 21, 2;
    +---------------------+
    | Log                 |
    +---------------------+
    | using password: YES |
    +---------------------+
    1 row in set (0.00 sec)
    
  • SET instance_name.option_name=option_value

    Este comando edita la configuración de la instancia especificada para cambiar/añadir opciones a la instancia. El IM asume que el fichero de configuración está localizado en /etc/my.cnf. Debe comprobar que el fichero existe y que tiene los permisos apropiados.

    mysql> SET mysqld2.port=3322;
    Query OK, 0 rows affected (0.00 sec)
    

    Los cambios hecho en el fichero de configuración no tendrán efecto hasta reiniciar el servidor MySQL. Además, estos cambios no se guardan en la cache local de configuración del Instance Manager hasta que se ejecuta un comando FLUSH INSTANCES.

  • UNSET instance_name.option_name

    Este comando elimina una opción de un fichero de configuración de una instancia.

    mysql> UNSET mysqld2.port;
    Query OK, 0 rows affected (0.00 sec)
    

    Los cambios hecho en el fichero de configuración no tendrán efecto hasta reiniciar el servidor MySQL. Además, estos cambios no se guardan en la cache local de configuración del Instance Manager hasta que se ejecuta un comando FLUSH INSTANCES.

  • FLUSH INSTANCES

    Este comando fuerza a IM a releer el fichero de configuración y a refrescar estructuras internas. Este comando debe ejectuarse tras editar el fichero de configuración. Este comando no reinicia las instancias:

    mysql> FLUSH INSTANCES;
    Query OK, 0 rows affected (0.04 sec)
    

5.3. Configuración del servidor MySQL

Esta sección discute los siguientes tópicos de MySQL Server:

  • Opciones de arranque que soporta el servidor

  • Cómo configurar el modo SQL del servidor

  • Variables de sistema del servidor

  • Variables de estado del servidor

5.3.1. Opciones del comando mysqld

Cuando arranca el servidor mysqld , puede especificar opciones de programa usando cualquiera de los métodos descritos en Sección 4.3, “Especificar opciones de programa”. Los métodos más comunes son proporcionar opciones en un fichero de opciones o por línea de comandos. Sin embargo, en la mayoría de los casos es deseable asegurar que el servidor usa las mismas opciones cada vez que se ejecuta. La mejor manera de asegurarlo es listarlas en un fichero de opciones. Consulte Sección 4.3.2, “Usar ficheros de opciones”.

mysqld lee opciones de los grupos [mysqld] y [server]. mysqld_safe lee opciones de los grupos [mysqld], [server], [mysqld_safe], y [safe_mysqld]. mysql.server lee opciones de los grupos [mysqld] y [mysql.server] . Un servidor MySQL incrustrado normalmente lee opciones de los grupos [server], [embedded], y [xxxxx_SERVER] , donde xxxxx es el nombre de la aplicación en la que el servidor está incrustado.

mysqld acepta varias opciones de línea de comando. Para una breve lista, ejecute mysqld --help. Para ver la lista completa, use mysqld --verbose --help.

La siguiente lista muestra algunas de las opciones de servidor más comunes. Opciones adicionales se describen en los siguientes links:

También puede cambiar los valores de una variable de sistema del servidor usando el nombre de variable como opción, tal y como se describe más tarde en esta sección.

  • --help, -?

    Muestra un mensaje de ayuda corto y sale. Use las opciones --verbose y --help simultáneamente para ver el mensaje entero.

  • --allow-suspicious-udfs

    Este opción controla si las funciones definidas por el usuario que sólo tienen un símbolo xxx para la función principal pueden cargarse. Por defecto, la opción está desactivada y sólo UDFs que tengan al menos un símbolo auxiliar pueden cargarse. Esto previene intentos de cargar funciones de ficheros con objetos compartidos que no contengan UDFs legítimos. En las series de MySQL 5.0 está opción se añadió en la versión 5.0.3. Consulte Sección 27.2.3.6, “Precauciones de seguridad en funciones definidas por usuarios”.

  • --ansi

    Usa sintaxis estándard SQL (ANSI) en lugar de sintaxis MySQL.Consulte Sección 1.7.3, “Ejecutar MySQL en modo ANSI”. Para un control más preciso sobre el modo SQL del servidor, use la opción --sql-mode.

  • --basedir=path, -b path

    El path al directorio de instalación de MySQL. Todas las rutas se resuelven normalmente relativas a ésta.

  • --bind-address=IP

    La dirección IP a ligar.

  • --console

    Escribe los mensajes de error por stderr y stdout incluso si --log-error está especificado. En Windows, mysqld no cierra la pantalla de consola si se usa esta opción.

  • --character-sets-dir=path

    El 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”.

  • --chroot=path

    Pone el servidor mysqld en un entorno cerrado durante el arranque usando la llamada de sistema chroot(). Esta es una medida de seguridad recomendada. Tenga en cuenta que el uso de esta opción limita de alguna manera LOAD DATA INFILE y SELECT ... INTO OUTFILE.

  • --character-set-server=charset

    Usa charset como el conjunto de caracteres por defecto del servidor. Consulte Sección 5.9.1, “El conjunto de caracteres utilizado para datos y ordenación”.

  • --core-file

    Escribe un fichero core si mysqld muere. Para algunos sistemas, también puede especificar la opción --core-file-size en mysqld_safe. Consulte Sección 5.1.3, “El script de arranque del servidor mysqld_safe. Tenga en cuenta que en algunos sistemas como Solaris, no obtiene un fichero core si está usando la opción --user.

  • --collation-server=collation

    Usa collation como la colación del servidor por defecto. Consulte Sección 5.9.1, “El conjunto de caracteres utilizado para datos y ordenación”.

  • --datadir=path, -h path

    La ruta al directorio de datos.

  • --debug[=debug_options], -# [debug_options]

    Si MySQL está configurado con --with-debug, puede usar esta opción para obtener un fichero de traza de qué está haciendo mysqld . La cadena de caracteres debug_options a menudo es 'd:t:o,file_name'. Consulte Sección D.1.2, “Crear ficheros de traza”.

  • (DEPRECATED) --default-character-set=charset

    Usa charset como el conjunto de caracteres por defecto. Esta opcíon está obsoleta a favor de --character-set-server. Consulte Sección 5.9.1, “El conjunto de caracteres utilizado para datos y ordenación”.

  • --default-collation=collation

    Usa collation como colación por defecto. Esta opción está obsoleta a favor de --collation-server. Consulte Sección 5.9.1, “El conjunto de caracteres utilizado para datos y ordenación”.

  • --default-storage-engine=type

    Esta opción es un sinónimo para --default-table-type.

  • --default-table-type=type

    Cambia el valor por defecto de tipo de tablas. Consulte Capítulo 14, Motores de almacenamiento de MySQL y tipos de tablas.

  • --default-time-zone=type

    Cambia la zona horaria del servidor. Esta opción cambia la variable global de sistema time_zone . Si no se da esta opción, la zona horaria por defecto es la misma que la del sistema (dada por el valor de la variable de sistema system_time_zone.

  • --delay-key-write[= OFF | ON | ALL]

    Coómo debe usarse la opción DELAYED KEYS. La escritura retardada de claves provoca que los buffers de claves no se vuelquen entre escrituras para tablas MyISAM . OFF desactiva escritura de claves retardada. ON activa escritura de claves reatardada para aquellas tablas creadas con la opción DELAYED KEYS . ALL retarda la escritura de claves para todas las tablas MyISAM . Consulte Sección 7.5.2, “Afinar parámetros del servidor”. Consulte Sección 14.1.1, “Opciones de arranque de MyISAM.

    Nota: Si asigna a esta variable el valor ALL, no debe usar tablas MyISAM de otro programa (como de otro servidor MySQL o con myisamchk) cuando una tabla esté en uso. Hacerlo provoca corrupción de los índices.

  • --des-key-file=file_name

    Lee las claves por defecto usadas por DES_ENCRYPT() y DES_DECRYPT() de este fichero.

  • --enable-named-pipe

    Activa el soporte para named pipes. Esta opción se aplica sólo en Windows NT, 2000, XP y 2004, y sólo pueden usarse con servidores mysqld-nt y mysqld-max-nt que soporten conexiones para named pipes.

  • --exit-info[=flags], -T [flags]

    Esta es una máscara de bits de diferentes flags y que puede usar para debugar el servidor mysqld . No use esta opción a no ser que sepa exactamente lo que hace!

  • --external-locking

    Activa bloqueo del sistema. Tenga en cuenta que si usa esta opción en un sistema en que lockd no funcione plenamente (comom en Linux), es fácil para mysqld caer en un deadlock. Esta opción préviamente era --enable-locking.

    Nota: Si usa esta opción para permitir actualizaciones en tablas MyISAM en cualquier proceso MySQL, debe asegurarse que las siguiente condiciones se satisfacen:

    • No debe usar la caché de consultas para consultas que usen tablas actualizadas por otros procesos.

    • No debe usar --delay-key-write=ALL o DELAY_KEY_WRITE=1 en ninguna tabla compartida.

    La forma más fácil de asegurar esto es usar siempre --external-locking junto a --delay-key-write=OFF --query-cache-size=0.

    (Esto no se hace por defecto ya que en muchas configuraciones es útil tener una mezcla de las opciones anteriores.)

  • --flush

    Escribe todos los cambios a disco después de cada comando SQL. Normalmente MySQL escribe todos los cambios en disco después de cada comando SQL y deja al sistema operativo la sincronización con el disco. Consulte Sección A.4.2, “Qué hacer si MySQL sigue fallando (crashing)”.

  • --init-file=file

    Lee comandos SQL de este fichero al arrancar. Cada comando debe ser de una sola línea y no debe incluir comentarios.

  • --innodb-safe-binlog

    Añade garantía de consistencia entre el contenido de las tablas InnoDB y el log binario. Consulte Sección 5.10.3, “El registro binario (Binary Log)”.

  • --language=lang_name, -L lang_name

    Mensajes de error del cliente en el idioma dado. lang_name puede darse como el nombre del idioma o como la ruta al directorio donde los ficheros de idioma están instalados. Consulte Sección 5.9.2, “Escoger el idioma de los mensajes de error”.

  • --large-pages

    Algunas arquitecturas hardware o de sistemas operativos soportan paginación de memoria mayor a la que hay por defecto (normalmente 4 KB). La implementación de este soporte depende del hardware subyacente y del SO. Aplicaciones que necesiten mucha memoria pueden obtener mejoras de rendimiento usando páginas grandes gracias a reducir los fallos en el Translation Lookaside Buffer (TLB).

    Actualmente, MySQL soporta sólo implementaciones en Linux de soporte para páginas grandes (que se llama HugeTLB en Linux). Tenemos planes de extender este soporte a FreeBSD, Solaris y posiblemente otras plataformas.

    Antes de poder usar páginas grandes en Linux, es necesario configurar el pool de memoria de HugeTLB. Como referencia, consulte el fichero hugetlbpage.txt en la fuente del kernel Linux.

    Esta opción está desactivada por defecto. Se añadió en MySQL 5.0.3.

  • --log[=file], -l [file]

    Log de conexiones y consultas en este fichero. Consulte Sección 5.10.2, “El registro general de consultas”. Si no especifica un nombre de fichero, MySQL usa host_name.log como nombre de fichero.

  • --log-bin=[file]

    El fichero de logs binario. Loguea todas las consultas que cambian datos en este fichero. Se usa para copias de seguridad y replicación. Consulte Sección 5.10.3, “El registro binario (Binary Log)”. Se recomienda especificar un nombre de fichero (consulte Sección A.8.4, “Cuestiones abiertas en MySQL” para la razón) en caso contrario MySQL usa host_name-bin como el nombre base para el fichero de logs.

  • --log-bin-index[=file]

    El fichero índice para log binario. Consulte Sección 5.10.3, “El registro binario (Binary Log)”. Si no especifica un nombre de fichero, y si no especifica uno en --log-bin, MySQL usa host_name-bin.index como el nombre de fichero.

  • --log-bin-trust-routine-creators[={0|1}]

    Sin argumento o un argumento de 1, esta opción inicializa la variable de sistema log_bin_trust_routine_creators a 1. Con un argumento de 0, esta opción actualiza la variable de sistema a 0.. log_bin_trust_routine_creators afecta cómo MySQL fuerza las restricciones en la creación de rutinas almacenadas. Consulte Sección 19.3, “Registro binario de procedimientos almacenados y disparadores”.

    Esta opción se añadió en MySQL 5.0.6.

  • --log-error[=file]

    Mensajes de error y de arranque en este fichero. Consulte Sección 5.10.1, “El registro de errroes (Error Log)”. Si no especifica un nombre de fichero, MySQL usa host_name.err como nombre de fichero. Si el nombre de fichero no tiene extensión, una extensión .err se añade al nombre.

  • --log-isam[=file]

    Loguea todos los cambios ISAM/MyISAM en este fichero (usado sólo al debugar ISAM/MyISAM).

  • (DEPRECATED) --log-long-format

    Loguea información extra a cualquiera de los logs que haya activados (log de actualización, log de consultas lentas y log binario). Por ejemplo, se añade el nombre de usuario y tiempo de la consulta para todas las consultas. Esta opción está obsoleta en MySQL 5.0, y ahora representa el comportamiento por defecto para logueo. (Consulte la descripción para --log-short-format.) La opción --log-queries-not-using-indexes está disponible para los propósitos de loguear consultas que no usan índices en el log de consultas lentas

  • --log-queries-not-using-indexes

    Si usa esta opción con --log-slow-queries, las consultas que no usan índices también se loguean en el log de consultas lentas. Consulte Sección 5.10.4, “El registro de consultas lentas (Slow Query Log)”.

  • --log-short-format

    Loguea menos información en cualquiera de los logs activados (log de actualización, log binario y log de consultas lentas). Por ejemplo, el nombre de usuario y el tiempo en que se produce la consulta no se guardan para las consultas.

  • --log-slow-admin-statements

    Loguea comandos lentos administrativos tales como OPTIMIZE TABLE, ANALYZE TABLE, y ALTER TABLE en el log de consultas lentas.

  • --log-slow-queries[=file]

    Loguea todas las consultas que han tardado más de long_query_time segundos en ejecutarse en este fichero.. See Sección 5.10.4, “El registro de consultas lentas (Slow Query Log)”. Consulte las descripciones de las opciones --log-long-format y --log-short-format para más detalles.

  • --log-warnings, -W

    Muestra advertencias tales como Aborted connection... en el log de errores. Se recomienda activar esta opción, por ejemplo, si usa replicación (obtiene mayor información acerca de lo que está ocurriendo, tal como mensajes acerca de fallos de red y reconexiones). Esta opción está activada por defecto en MySQL 5.0; para desactivarla, use --skip-log-warnings. Las conexiones abortadas no se loguean en el log de errores a no ser que el valor sea mayor que 1. Consulte Sección A.2.10, “Errores de comunicación y conexiones abortadas”.

  • --low-priority-updates

    Operaciones que modifiquen la tabla (INSERT, REPLACE, DELETE, UPDATE) tiene una prioridad inferior a las selecciones. También puede hacerse vía {INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ... para bajar la prioridad de sólo una consulta, o con SET LOW_PRIORITY_UPDATES=1 para cambiar la prioridad en un thread. Consulte Sección 7.3.2, “Cuestiones relacionadas con el bloqueo (locking) de tablas”.

  • --memlock

    Bloquea el proceso mysqld en memoria. Funciona con sistemas tales como Solaris que soportan la llamada de sistema mlockall() . Esto puede ser útil si tiene un problema en el que el sistema operativo cause que mysqld realice swap en el disco. Tenga en cuenta que el uso de esta operación requiere que ejecute el servidor como root, lo que normalmente no es una buena idea por razones de seguridad.

  • --myisam-recover [=option[,option...]]]