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.4. El proceso de cierre del servidor MySQL
- 5.5. Cuestiones de seguridad general
- 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.8. Prevención de desastres y recuperaciones
- 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.11. Ejecutar más de un servidor MySQL en la misma máquina
- 5.12. La caché de consultas de MySQL
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.
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”.
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:
-
mysqld
El demonio SQL (esto es, el servidor MySQL). Para usar programas clientes, este programa debe estar en ejecución, ya que los programas ganan el acceso a la base de datos conectándose al servidor. Consulte Sección 5.3, “Configuración del servidor MySQL”.
-
Una versión del servidor que incluye características adicionales. Consulte Sección 5.1.2, “El servidor extendido de MySQL mysqld-max”.
-
Un script de arranque del servidor. mysqld_safe intenta inicializar mysqld-max si existe, y mysqld en caso contrario. Consulte Sección 5.1.3, “El script de arranque del servidor mysqld_safe”.
-
Un script de arranque del servidor. Este script se usa en sistemas que utilizan directorios de ejecución que contienen scripts que inicializan servicios para niveles de ejecución particular. Invoque mysqld_safe para inicializar el servidor MySQL. Consulte Sección 5.1.4, “El script mysql.server para el arranque del servidor”.
-
Un script de arranque del servidor que puede arrancar o parar varios servidores instalados en el sistema. Consulte Sección 5.1.5, “El programa mysqld_multi para gestionar múltiples servidores MySQL”.
-
Este script crea las tablas de permisos de MySQL con privilegios por defecto. Normalmente se ejecuta sólo una vez, cuando se instala por primera vez MySQL en el sistema. Consulte Sección 2.9.2, “Pasos a seguir después de la instalación en Unix”.
-
Este script se usa tras una actualización, para actualizar las tablas de permisos con cualquier cambio que se hayan hecho en nuevas versiones de MySQL. Consulte Sección 2.10.2, “Aumentar la versión de las tablas de privilegios”.
Hay otros programas que también se ejecutan en la máquina del servidor:
-
Una utilidad para describir, testear, optimizar y reparar tablas
MyISAM
. myisamchk se describe en Sección 5.8.3, “Mantenimiento de tablas y recuperación de un fallo catastrófico (crash)”. -
Este programa crea una publicación binaria de un MySQL compilado. Puede enviarse por FTP a
/pub/mysql/upload/
aftp.mysql.com
para el uso de otros usuarios de MySQL. -
El script para reportar bugs. Puede usarse para enviar un reporte de bug a la lista de correo de MySQL. (Puede visitar http://bugs.mysql.com/ para rellenar un reporte de bug en línea. Consulte Sección 1.6.1.3, “Cómo informar de bugs y problemas”.)
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 RPMMySQL-Max
para instalar el servidor llamado mysqld-max. El RPMMySQL-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 carácteres 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:
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 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:
Valor | Significado |
YES
|
La característica se soporta y está activa. |
NO
|
La característica no se soporta. |
DISABLED
|
La 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.
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 directorioledir
. Si el argumento de--mysqld-version
está vacio, mysqld_safe usa mysqld en el directorioledir
. -
--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 usuarioid_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
ydata
. En distribuciones de código fuente, busca los directorioslibexec
yvar
. 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:
-
Ejecuta un número de comprobaciones del sistema y de opciones.
-
Ejecuta comprobaciones sobre tablas
MyISAM
. -
Provee de una presencia en pantalla a el servidor MySQL.
-
Inicia mysqld, lo supervisa, y lo reinicia si termina con error.
-
Envía mensajes de error desde mysqld a el archivo
host_name
.err en el directorio de datos. -
Envía la salida por pantalla de mysqld_safe hacia el archivo
host_name
.safe en el directorio de datos.
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.)
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 habitualmy.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 habitualmy.cnf
. -
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
PATH
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
stop
yreport
. -
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
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únmulti_admin
ejecutando el siguiente comando en cada servidor:shell> mysql -u root -S /tmp/mysql.sock -p
root_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 usandokill -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 usuarioroot
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