"Error al generar el proceso principal de mysql: no se puede ejecutar: No existe tal archivo o directorio"

56

Soy un novato en MySQL, así que tengan paciencia conmigo.

Acabo de terminar de actualizar 11.10 a 12.04.

Todo parecía funcionar sin contratiempos y todo mi software y configuraciones funcionan bien. Aparte de MySQL.

Cuando lo intento:

sudo start mysql

Recibo un error:

start: Job failed to start

¿Dónde puedo diagnosticar cuál es el problema? Y (con suerte): ¿cómo solucionarlo?

(Deshabilité el inicio automático siguiendo los consejos aquí si eso es de alguna importancia)


Actualización 1:

Ambas salidas de:

cat /var/log/mysql.err 
cat /var/log/mysql.log

estan vacios

Salida de dmesg | grep mysql:

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

Actualización 2:

Como lo indica AWinter a continuación, parecía que MySQL desapareció automáticamente después de la actualización y tuvo que ser reinstalado.

radek
fuente

Respuestas:

48

Compruebe que el paquete mysql-server-5.1 fue desinstalado, parece que puede persistir después de la actualización. Tuve el mismo error y tuve que purgar el servidor MySQL 5.1 y 5.5 y luego reinstalarlo.

Primero haga una copia de seguridad de su directorio / var / lib / mysql / solo para estar seguro.

sudo cp -R /var/lib/mysql/ ~/mysql

Luego purgue MySQL (esto eliminará php5-mysql y phpmyadmin, así como una serie de otras bibliotecas, así que prepárese para volver a instalar algunos elementos después de esto.

sudo apt-get purge mysql-server-5.1 mysql-common

Elimine la carpeta / etc / mysql / y su contenido.

sudo rm /etc/mysql/ -R

A continuación, compruebe que sus archivos de base de datos antiguos todavía están en / var / lib / mysql / si no lo están, luego cópielos nuevamente en la carpeta y luego conozca la raíz: root

(solo ejecútelos si los archivos ya no están allí)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

A continuación, instale el servidor mysql

sudo apt-get install mysql-server

Finalmente, reinstale los paquetes faltantes como phpmyadmin y php5-mysql.

Un invierno
fuente
1
Excelente. Funcionó como un encanto. Todos trabajando de nuevo. Una nota: no tuve que eliminar este directorio sudo rm /etc/mysql/ -R, simplemente no estaba presente en mi caso. De todos modos - por suerte, era sólo una instalación local para probar Wordpress .. pregunto qué pasaría en un servidor real o_O
Radek
apt-get --reinstall install mysql-server-xx hizo el trabajo por mí.
Yashima
Esto funcionó para mí, pero probablemente debería haberlo hecho de apt-get updateantemano, porque eliminó dovecot y php5-mysql. Solo pude reinstalarlos después de la actualización. Una vez que lo hice, todo volvió a funcionar bien.
AntonChanning
Lo entiendo -bash: cd: /var/lib/mysql/: Permission deniedy sudo -ini siquiera funciona.
Charlotte
@LittleBigBot Hice un cambio que debería solucionarlo.
Invierno
15
sudo dpkg-reconfigure mysql-server-5.5
Kevin C. Smith
fuente
No es una respuesta muy amigable, pero funcionó para mí :-)
Joseph
1
No funcionó para mí: [
ThomasReggi
12

Tuve este mismo problema y para mí fue que los archivos de registro de InnoDB tenían un tamaño diferente al que mysql esperaba, y fallaron en silencio durante la actualización.

Tenía un archivo de configuración personalizado que fue eliminado en la actualización a 12.04 que establece los tamaños de archivo de registro en algo diferente a la configuración predeterminada.

Debe eliminar los archivos: / var / lib / mysql / ib_logfile *

Después de que los archivos se hayan ido, mysql ahora puede comenzar y crear nuevos archivos de registro del tamaño predeterminado.

Corey Aufang
fuente
Bingo. En nuestro caso, un desarrollador había alterado algunos ajustes de configuración para innodb (y ni él ni yo sabíamos que eso podría causar un problema). Esto evitó que mysql se iniciara. Eliminar esos archivos de configuración permitió que MySQL se iniciara.
gaoshan88
Bingo: cambió la configuración de innodb_log_file_size.
tweak2
9

La mayoría de los errores aparecerán al iniciar el servidor en modo detallado no demonio y ver la salida:

sudo mysqld --verbose
Ian Mackinnon
fuente
7

Tuve el mismo problema, pero ninguna de las respuestas anteriores me ayudó. Entonces, como última esperanza, intenté liberar algo de espacio en disco. Simplemente elimino archivos de registro innecesarios de / var / log que liberaron un espacio de 2.5G. Entonces MySQL comenzó normalmente.

Ojo
fuente
Sí, este también era mi problema. mysql no se iniciaba durante el arranque, como lo había sido. Más tarde fue la información del sistema que se muestra en la terminal; "Uso de /: 95.1%" Por lo tanto, no había suficiente espacio libre para que mysql (y otros procesos) comenzaran. Necesitaba hacer un poco de limpieza de archivos, y mysql comenzó sin problemas.
Screenack
Este fue mi caso. La limpieza del disco y Mysql comienzan a funcionar.
Sergey Romanov
5

Esto a veces sucede y aunque hay un par de problemas diferentes que podrían hacer que mysql no se inicie, escribiré aquí algunos de los más comunes que conozco:

NOTA: Debido a la explicación de los problemas más comunes, supongo que ya ha intentado eliminar e instalar, o simplemente reinstalar el servicio mysql de esta manera:

Para instalar - sudo apt-get install mysql-server mysql-client
Para eliminar - sudo apt-get remove mysql-server mysql-client
Para purgar (Eliminar archivos + Configuración) - sudo apt-get purge mysql-server mysql-client
Para reinstalar -sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnfEl archivo no está en el directorio predeterminado. Debería estar (Por defecto) ubicado en /etc/my.cnfo /etc/mysql/my.cnf.

  2. No hay suficiente espacio en el disco duro donde se encuentran los archivos de datos mysql. Si las bases de datos se hacen demasiado grandes y ocupan el 100% del disco duro, el servicio fallará.

  3. Después de la actualización, verifique que el my.cnfarchivo esté en el lugar correcto. Dependiendo de cómo se actualizó o de qué versión se actualizó, podría estar en /etc/my.cnfo /etc/mysql/my.cnfcomo se mencionó anteriormente. También recuerde que el archivo también se puede nombrar mysql.confy no solo my.cnf. Esto sucede en los casos en que ha descargado el binario de mysql.com .

  4. Hacer un dmesgpara ver qué está lanzando el servicio mysql como mensaje de error ayuda, ya que da el error de carga. También podría decir por qué sucede esto. Si escribe dmesgsolo en la terminal, le mostrará el mundo. Lo que queremos es la información sobre mysql, así que haga algo como esto: dmesg | grep mysqlesto le arrojará cualquier línea que contenga mysql en ellos.

  5. Verifique que el archivo my.cnfo mysql.confsea ​​correcto. En 12.04 MySQL es la versión 5.5, en 11.10 es la versión 5.1. Es posible que tenga algunos cambios en el archivo conf (en realidad no lo he comprobado) y puede sonar tonto, pero seguro que puede darte algunos problemas.

  6. Los errores relacionados con problemas de socket normalmente son culpa del archivo my.cnfo mysql.confapuntando al lugar equivocado, el error normalmente se mostrará como:

    No se puede conectar al servidor MySQL local a través del socket '/var/run/mysqld/mysqld.sock'

    La otra fuente de este problema está relacionada con el mysqlarchivo, ya /etc/init.dque apunta a la carpeta incorrecta porque podría estar usando una secuencia de comandos más antigua que la necesaria para el mysql real en el sistema (puede que no se haya actualizado correctamente, no se sobrescribió) el archivo de configuración, etc.). Así que solo edite cualquiera de estos dos archivos y vea si están apuntando a otro lugar y luego simplemente haga una sudo service mysql restartcomprobación para ver si funciona.

  7. Para ver mejor los resultados específicos de error de mysql, haga lo siguiente:

    cat /var/log/mysql.err- Te mostrará los errores de mysql. Lo haría así cat /var/log/mysql.err | lesssi ve que pasa demasiada información, ya que lesslo ayudará a desplazarse por la salida de cat.

    Lo mismo ocurre cat /var/log/mysql.logsi ve el error, tal vez ponerlo en la pregunta o como comentario ayudará a responder esto más rápido.

  8. Si tiene problemas de conexión y el servicio que realmente está ejecutando, intente ver si el servidor de seguridad del servidor permite conexiones a través del puerto 3306 (conexiones entrantes). Luego verifique si el enrutador (si corresponde) no ha bloqueado el puerto 3306. Básicamente, haga una prueba de red para ver de dónde se originó el problema relacionado con el puerto asignado a mysql.

Si todo está bien, para probar si el servicio mysql se está ejecutando, escriba service mysql status

Como último recurso. Si está ejecutando mysql pero no puede iniciar sesión, intente lo siguiente:

  1. Detenga el servidor MySQL:

    sudo /etc/init.d/mysql stop o sudo service mysql stop

  2. Inicie el mysqldservicio manualmente con la configuración manual

    sudo mysqld --skip-grant-tables &

    (Recuerde agregar el & else tendrá que abrir otro terminal. El & envía el proceso a un segundo plano y puede matar usando el mismo terminal).

  3. Inicie sesión en la base de datos mysql como ROOT

    mysql -u root mysql

  4. Escriba lo siguiente reemplazando MyPASSWORD con su nueva contraseña

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

Esto debería ser suficiente para iniciar sesión en su servicio Mysql como root nuevamente. Espero eso ayude.

Luis Alvarado
fuente
Gracias por sus comentarios. El archivo my.cnf está /etc/mysql/my.cnfen mi caso. ¿Es esa la ubicación correcta? dmesgme da una gran cantidad de resultados que está más allá de mi comprensión: / De hecho, tenía 5.1 instalado, ¿eso tiene alguna consecuencia?
radek
1
No se preocupe por la ubicación si encuentra el archivo. Permítanme actualizar la respuesta para proporcionar una mejor visión de la salida de mysql en dmesg.
Luis Alvarado
4

Tuve el mismo problema después de actualizar a Ubuntu Server 12.04 LTS, ejecutando

sudo apt-get install mysql-server 

fue suficiente para solucionarlo, aunque se quejó de una antigua base de datos de spotweb. Lo arreglé eliminando spotweb:

sudo apt-get purge spotweb

y reconfigurar mysql:

sudo dpkg-reconfigure mysql-server-5.5
RedPixel
fuente
4

Agregaré esto en caso de que alguien se enfrente a problemas similares. Intenté toda la desinstalación y reinstalación en vano. La clave para encontrar la solución fue que el advenedizo coloca sus registros de errores en esta carpeta

/ var / log / upstart /

para mysql

/var/log/upstart/mysql.log

cuando abrí tenía este mensaje

Error del analizador de AppArmor para /etc/apparmor.d/usr.sbin.mysqld en /etc/apparmor.d/tunables/global en la línea 15: No se pudo abrir 'tunables / home'

Cuando busqué en la carpeta /etc/apparmor.d/tunables/ me faltaba el archivo de inicio, así que creé uno

gedit /etc/apparmor.d/tunables/home y copió el contenido de otra computadora que tenía estas líneas no comentadas

@ {HOME} = @ {HOMEDIRS} / * / / root /

@ {HOMEDIRS} = / inicio /

alguien enfrenta un problema similar aquí

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

luego de eso pude reiniciar el servicio

pt123
fuente
2

En mi caso, fue mucho más fácil que algunas respuestas aquí. Encontré el error relacionado en el launchpad y la solución fue como se menciona allí en el comentario 9:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart
Manfred Moser
fuente
1

Después de actualizar encontré que mysql-server / mysql-server-5.5 no estaba instalado y tampoco 5.1. Cambié el nombre de my.cnf a my.cnf_old e intenté instalar mysql-serven. Durante la instalación, hubo un mensaje de error que indicaba que no se pudo establecer la contraseña de root. Después de esto, verifiqué mis configuraciones, apariciones, etc. Todo parecía estar bien. Mi siguiente intento fue reconfigurar mysql-server pero se quejó de que el paquete no estaba completamente instalado. Así que decidí desinstalar y, durante este proceso, apt-get reparó el paquete y ahora funciona. No sé por qué porque no cambié nada.

usuario54914
fuente
1

Tuve problemas similares, pero rápidamente fui rastreado hasta aparecer, lo que recordé me había dado este problema anteriormente.

Si realiza cambios en esta configuración y su sistema usa apparmor, es posible que también deba ajustar /etc/apparmor.d/usr.sbin.mysqld. P.ej. se agregaron estas líneas (para permitir un enlace simbólico a my.cnf y para permitir que se lea el archivo con enlace simbólico, presumiblemente):

/ usr / sbin / mysqld {... /etc/mysql/*.cnf lr, /path/to/symlinked/my.cnf r, ...}

Simon Nuttall
fuente
1

En mi caso, intenté instalar MySQL en una nueva instalación de Ubuntu 12.04, pero no entendí por qué me dio un error al configurar la contraseña para el usuario 'root'. Intenté todas las soluciones anteriores, pero nada que hacer.

Luego decidí purgar / eliminar todo, desinstalé el servidor MySQL y eliminé todas sus carpetas (/ etc / mysql / y / var / lib / mysql /), eventualmente gracias a una especie de aleatoriedad que no dio ningún error durante el reinstalación y pude establecer la contraseña e iniciar la instancia del servidor.

Alexian
fuente
0

En el terminal puede instalarlo nuevamente, y hace que ejecute my.cnf, puede escribir:

sudo apt-get install mysql-server-5.1
sudo apt-get --reconfigure mysql-server-5.1
sudo apt-get update
sudo start mysql my.cnf

podría funcionar de esta manera.

Miguel
fuente
0

Tengo problemas para que la adición performance_schemabajo [mysqld]en /etc/mysql/my.confcausa de este fracaso. Se eliminó esa línea y mysql pudo comenzar de nuevo.

Editar: Resulta que un concierto de ram no es suficiente para iniciar mysqld con performance_schema habilitado. Me topé con 3 conciertos y funcionó bien.

ThorSummoner
fuente