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

MySQL 5.0

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
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
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 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 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 () 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 en primer lugar para instalar una versión estándard del servidor llamada mysqld. A continuación use el RPM para instalar el servidor llamado mysqld-max. El RPM 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:

  • Esta opción añade un sufijo a la cadena de carácteres mysqld de la versión.

  • 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.

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

  • 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.

  • 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 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:

Sistema Soporte BDB Soporte NDB
AIX 4.3 N N
HP-UX 11.0 N N
Linux-Alpha N S
Linux-IA-64 N N
Linux-Intel S S
Mac OS X N N
NetWare N N
SCO OSR5 S N
Solaris-SPARC S S
Solaris-Intel N S
UnixWare S N
Windows NT/2000/XP S N

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 .)

Antes de MySQL 4.1.2, 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 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:

Valor Significado
La característica se soporta y está activa.
La característica no se soporta.
La característica se soporta pero no está activa.

Un valor 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 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 .err debería contener la razón indicando porqué la opción está deshabilitada.

Puede ver el mensaje para los motores de almacenamiento , , o si el servidor está compilado para soportarlos pero se arrancó con las opciones , , o en tiempo de ejecución.

Todos los servidores MySQL soportan tablas , ya que 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 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 o la opción 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 de un archivo de opciones. Consulte Sección 4.3.2, “Usar ficheros de opciones”.

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

mysqld_safe soporta las siguientes opciones:

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

  • La ruta al directorio de instalacion de MySQL.

  • 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.

  • La ruta al directorio de datos.

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

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

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

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

  • El nombre del programa servidor (en el directorio ) 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.

  • Esta opción es similar a la opción , 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_safe inicia el programa en el directorio . Si el argumento de está vacio, mysqld_safe usa mysqld en el directorio .

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

  • No leer ningún archivo de opciones.

  • 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 para que esto funcione correctamente.

  • La ruta al archivo de ID del proceso.

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

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

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

  • | }

    Ejecuta el servidor mysqld como el usuario con nombre o el ID numérico de 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 y . En distribuciones de código fuente, busca los directorios y . Esta condición debe cumplirse si se ejecuta mysqld_safe desde el directorio de instalación de MySQL (por ejemplo, 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. y 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 y 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 de un archivo de opciones . 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 .

  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 .err en el directorio de datos.

  6. Envía la salida por pantalla de mysqld_safe hacia el archivo .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 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 (.rpm), el script mysql.server se instalará en el directorio con el nombre . 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 y de los ficheros de opciones. (Para compatibilidad con versiones anteriores, también lee las secciones , aunque debe renombrar dichas secciones como 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 en (o en el fichero nombrado por la opción ). 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 (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 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 [] {start|stop|report} [[,]...]

, , y indican qué operaciones desea realizar. Puede realizar la operación designada en un único servidor o en múltiples servidores, dependiendo de la lista 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 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 para un grupo llamado es . Para especificar un rango de números, separe el primero y último número por un guión. El valor reperesenta los grupos desde hasta . 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+ ; 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 :

shell> mysqld_multi start 17

Este comando para diversos servidores, usando los grupos de opciones y del hasta el :

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:

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

  • Muestra un fichero de opciones de ejemplo..

  • Muestra un mensaje de ayuda y sale.

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

  • El binario mysqladmin a usar para parar los servidores.

  • 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 o fije mysqld_safe.

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

  • 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.

  • Desactiva los mensajes de advertencia.

  • 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 y .

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

  • Es más detallado.

  • 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 . 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 ejecutando el siguiente comando en cada servidor:

    shell> mysql -u root -S /tmp/mysql.sock -p
    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 desde el servidor desde el que quiere ejecutar mysqld_multi.

  • La opción es muy importante si está usando mysqld_safe para arrancar mysqld (por ejemplo, ) 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 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 para mysqld, pero para hacerlo debe ejecutar el script mysqld_multi como el usuario 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 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”.