El propósito del script mysql_install_db es generar tablas de permisos MySQL nuevas. No sobreescribe las tablas de permisos existentes ni afecta a otros datos.
Para crear nuevamente las tablas de privilegios, primero debe
detenerse el servidor mysqld si está
ejecutándose. Luego se renombra -para preservarlo- el
directorio mysql
que está dentro del
directorio de datos, y se ejecuta
mysql_install_db. Por ejemplo:
shell> mv mysql-data-directory/mysql mysql-data-directory/mysql-old shell> mysql_install_db --user=mysql
Esta sección detalla problemas que podrían hallarse cuando se ejecute mysql_install_db:
mysql_install_db falla al instalar las tablas de permisos
mysql_install_db puede fallar al instalar las tablas de permisos y finalizar despues de mostrar los siguientes mensajes:
Starting mysqld daemon with databases from XXXXXX mysqld ended
En tal caso, se debe examinar el fichero de registro de
errores muy cuidadosamente. El registro podría hallarse
en el directorio XXXXXX
con un nombre
similar al mensaje de error, y debería indicar el motivo
por el que mysqld no se inició. Si no
fuera de ayuda, habrá que enviar un informe de error
incluyendo el texto del registro. Consulte
Sección 1.6.1.3, “Cómo informar de bugs y problemas”.
Ya hay un proceso mysqld en ejecución
Esto indica que el servidor se está ejecutando, en cuyo caso las tablas de permisos probablemente ya se crearon. De ser así, no es necesario ejecutar mysql_install_db en absoluto, porque sólo se hace una vez (cuando se instala MySQL la primera vez).
No es posible instalar un segundo servidor mysqld cuando hay uno en ejecución.
Esto puede ocurrir cuando se tiene una instalación de MySQL y se desea realizar una nueva instalación en una ubicación diferente. Por ejemplo, se podría tener una instalación en producción y crear una segunda instalación con fines de prueba. Generalmente, el problema es que el segundo servidor intenta utilizar una interfaz de red que está siendo usada por el primero. En este caso se debería ver uno de los siguientes mensajes de error:
Can't start server: Bind on TCP/IP port: Address already in use Can't start server: Bind on unix socket...
Consulte Sección 5.11, “Ejecutar más de un servidor MySQL en la misma máquina” para ver instrucciones sobre la instalación de múltiples servidores.
No se tiene acceso de escritura a
/tmp
Si no se tiene acceso de escritura para crear ficheros
temporales o un fichero de socket Unix en la ubicación
por defecto (el directorio /tmp
),
ocurrirá un error al ejecutar
mysql_install_db o el servidor
mysqld.
Se pueden especificar distintos directorios temporales y ubicaciones para ficheros socket de Unix ejecutando los siguientes comandos antes de iniciar mysql_install_db o mysqld:
shell> TMPDIR=/some_tmp_dir
/ shell> MYSQL_UNIX_PORT=/some_tmp_dir
/mysql.sock shell> export TMPDIR MYSQL_UNIX_PORT
debería ser la ruta completa a algún directorio para el
cual se tenga permiso de escritura.
some_tmp_dir
Luego de hacer esto se debería estar en condiciones de ejecutar mysql_install_db e iniciar el servidor con estos comandos:
shell> bin/mysql_install_db --user=mysql shell> bin/mysqld_safe --user=mysql &
Si mysql_install_db está ubicado en el
directorio scripts
, debe modificarse
el primer comando para que diga
scripts/mysql_install_db
.
Consulte Sección A.4.5, “Cómo proteger o cambiar el fichero socket de MySQL
/tmp/mysql.sock
”.
Consulte Apéndice E, Variables de entorno.
É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.