Si ocurren problemas durante el inicio del servidor, inténtese lo siguiente:
Especificar cualquier opción especial necesaria para el motor de almacenamiento en uso.
Asegurarse de que el servidor conoce dónde se encuentra el directorio de datos.
Cerciorarse de que el servidor pueda utilizar el directorio de datos. El propietario y los permisos sobre el directorio de datos y su contenido deben establecerse de forma que el servidor sea capaz de acceder a ellos y modificarlos.
Inspeccionar el registro de errores para ver porqué el servidor no se inicia.
Verificar que están disponibles las interfaces de red que el servidor intenta utilizar.
Algunos motores de almacenamiento tienen opciones que
controlan su comportamiento. Se puede crear un fichero
my.cnf
y establecer opciones de inicio
para el motor que se planea utilizar. Si se van a usar motores
de almacenamiento con soporte para tablas transaccionales
(InnoDB
, BDB
), hay que
asegurarse de que se han configurado según lo deseado antes
de iniciar el servidor:
Si se están empleando tablas InnoDB
,
hay que remitirse a las opciones de inicio específicas.
En MySQL 5.0, InnoDB
utiliza valores
por defecto para sus opciones de configuración si no se
indica ninguna. Consulte
Sección 15.3, “Configuración de InnoDB
”.
Si se están usando tablas BDB
(Berkeley DB), será necesario familiarizarse con las
diferentes opciones de inicio específicas de
BDB
. Consulte
Sección 14.4.3, “Opciones de arranque de BDB
”.
Cuando el servidor mysqld se inicia, se posiciona en el directorio de datos. Aquí es donde espera encontrar bases de datos y donde grabará sus ficheros de registro. En Unix, también grabará aquí el fichero pid (process ID, o identificador de proceso).
La ubicación del directorio de datos se establece en forma
fija cuando se compila el servidor. Aquí es donde, por
defecto, buscará el directorio de datos. Si el mismo se
encuentra en otra parte del sistema, el servidor no
funcionará correctamente. Se puede conocer la ubicación por
defecto ejecutando mysqld con las opciones
--verbose
y --help
.
Si los valores por defecto no coinciden con la instalación realizada en el sistema, se los puede sustituir especificando opciones para mysqld o mysqld_safe en la linea de comandos. También se pueden colocar en un fichero de opciones.
Para especificar explícitamente la ubicación del directorio
de datos, se emplea la opción --datadir
.
Sin embargo, normalmente se le puede indicar a
mysqld la ubicación del directorio base
donde está instalado MySQL, y el servidor buscará allí el
directorio de datos. Esto se hace con la opción
--basedir
option.
Para verificar los efectos de especificar opciones de ruta,
hay que invocar mysqld con dichas opciones
seguidas de --verbose
y
--help
. Por ejemplo, posicionándose donde
mysqld está instalado, y ejecutando los
siguientes comandos, se verán los efectos de iniciar el
servidor en el directorio base
/usr/local
:
shell> ./mysqld --basedir=/usr/local --verbose --help
Se pueden suministrar otras opciones, como
--datadir
, pero hay que tener en cuenta que
--verbose
y --help
deben
aparecer en último lugar.
Una vez que se haya logrado determinar la configuración de
ruta deseada, iniciar el servidor sin
--verbose
y --help
.
Si mysqld ya está ejecutándose, se puede conocer la configuración de rutas que está usando mediante la ejecución de este comando:
shell> mysqladmin variables
O bien:
shell> mysqladmin -h host_name
variables
host_name
es el nombre del host del
servidor MySQL.
Si se obtuviera el Errcode 13
(que
significa Permission denied (permiso
denegado)
) al iniciar mysqld,
indica que los permisos de acceso al directorio de datos o a
su contenido no permiten el acceso del servidor. En este caso,
hay que cambiar los permisos sobre los directorios y ficheros
involucrados para que el servidor tenga derecho a usarlos.
También se puede iniciar el servidor bajo el usuario de
sistema operativo root
, pero esto puede
traer aparejados problemas de seguridad y debería ser
evitado.
En Unix, hay que posicionarse en el directorio de datos y
verificar el propietario del directorio y su contenido para
asegurarse de que el servidor tiene acceso. Por ejemplo, si el
directorio de datos es
/usr/local/mysql/var
, usar este comando:
shell> ls -la /usr/local/mysql/var
Si el directorio de datos o sus ficheros o subdirectorios no tienen como propietario a la cuenta empleada para ejecutar el servidor, cambiar el propietario para que sea esa cuenta:
shell> chown -R mysql /usr/local/mysql/var shell> chgrp -R mysql /usr/local/mysql/var
Si el servidor falla en iniciarse correctamente, verificar el
fichero de registro de errores para ver si se puede encontrar
la causa. Los ficheros de registro se localizan en el
directorio de datos (generalmente, C:\Program
Files\MySQL\MySQL Server 5.0\data
en Windows,
/usr/local/mysql/data
en una
distribución binaria de Linux, y
/usr/local/var
en una distribución de
código fuente de Linux). Se buscan en el directorio de datos
los ficheros con un nombre con la forma
y
host_name
.err
,
donde host_name
.loghost_name
es el nombre del
host del servidor. Luego, examinar las últimas líneas de
estos ficheros. En Unix, puede utilizarse
tail
para mostrarlas:
shell> tailhost_name
.err shell> tailhost_name
.log
El registro de errores contiene información que indica el motivo por el cual el servidor no ha podido iniciarse. Por ejemplo, es posible ver algo como esto al examinarlo:
000729 14:50:10 bdb: Recovery function for LSN 1 27595 failed 000729 14:50:10 bdb: warning: ./test/t1.db: No such file or directory 000729 14:50:10 Can't init databases
Esto significa que no se inició mysqld con
la opción --bdb-no-recover
y Berkeley DB
halló algo incorrecto con sus propios ficheros de registro
cuando intentó recuperar las bases de datos. Para que sea
posible continuar, habría que mover los ficheros de registro
Berkeley DB antiguos desde el directorio de bases de datos a
alguna otra ubicación, donde puedan examinarse
posteriormente. Los ficheros de registro
BDB
reciben nombres en secuencia comenzando
en log.0000000001
, donde el número se
incrementa cada vez.
Si se está ejecutando mysqld con soporte
para tablas BDB
y mysqld
realiza un volcado del núcleo al inicio, podría deberse a
problemas con el registro de recuperación de
BDB
. En este caso, se puede intentar el
inicio de mysqld con
--bdb-no-recover
. Si esto ayuda, entonces
se deberían eliminar todos los ficheros de registro
BDB
del directorio de datos e intentar el
inicio de mysqld nuevamente, sin la opción
--bdb-no-recover
.
Si ocurriese cualquiera de los siguientes errores, significa que algún otro programa (quizá otro servidor mysqld) está utilizando el puerto TCP/IP o socket Unix que mysqld intenta emplear:
Can't start server: Bind on TCP/IP port: Address already in use Can't start server: Bind on unix socket...
Utilizar ps para determinar si se tiene otro servidor mysqld en ejecución. Si es así, detener el servidor antes de iniciar mysqld de nuevo. (si hay otro servidor ejecutándose, y realmente se desea tener múltiples servidores, se puede hallar información sobre cómo hacerlo en Sección 5.11, “Ejecutar más de un servidor MySQL en la misma máquina”.)
Si no hay otro servidor ejecutándose, inténtese ejecutar el
comando telnet nombre-de-host
número-puerto-TCP-IP
. (El número de puerto MySQL
por defecto es 3306). Luego presionar Enter un par de veces.
Si no se obtiene un mensaje de error como telnet:
Unable to connect to remote host: Connection
refused
, algún otro programa está ocupando el
puerto TCP/IP que mysqld está intentando
utilizar. Se necesitará determinar qué programa es y
desactivarlo, o bien indicar a mysqld que
escuche en un puerto diferente mediante la opción
--port
. En este caso, también se
necesitará especificar el número de puerto en los programas
cliente cuando se conecten al servidor a través de TCP/IP.
Otra razón por la que el puerto podría ser inaccesible es que se tenga un firewall que bloquee las conexiones a él. Si es así, modificar la configuración del firewall para permitir el acceso a ese puerto.
Si el servidor se inicia pero no es posible conectarse a él,
habría que cerciorarse de que se tiene una entrada en
/etc/hosts
que se vea así:
127.0.0.1 localhost
Estre problema ocurre solamente en sistemas que no tienen una biblioteca para trabajo con subprocesos y para los cuales MySQL debe configurarse para usar MIT-pthreads.
Si no es posible iniciar mysqld, se puede
generar un fichero de seguimiento para hallar el problema
utilizando la opción --debug
. Consulte
Sección D.1.2, “Crear ficheros de traza”.
Consulte Sección 2.3.14, “Resolución de problemas en la instalación de MySQL bajo Windows” para obtener mayor información sobre la resolución de problemas en instalaciones Windows.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.