¡MySQL no se iniciará!

12

Recibo este error cuando intento iniciar sesión en MySQL desde la línea de comandos:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Creo que esto significa que MySQL aún no se ha iniciado. Entonces trato de comenzarlo:

sudo /etc/init.d/mysql start

y recibo este mensaje:

* Starting MySQL database server mysqld [fail] 

¿Dónde miro / qué hago para que MySQL comience? Estoy ejecutando Ubuntu 8.04 e instalé MySQL a través de apt-get. He podido comenzar y usarlo un par de veces, así que no sé por qué dejó de funcionar.

Actualización: cuando ejecuto sudo /etc/init.d/mysql status recibo el mensaje:

* MySQL is stopped.

Actualización n. ° 2: Mis archivos de registro (/var/log/mysql.log & /var/log/mysql.err) están vacíos (si estos son los correctos)

Andrés
fuente
qué sucede cuando sudo /etc/init.d/mysql status
emgee

Respuestas:

10

En Ubuntu 12.04 tuve el mismo problema después de cambiar los tamaños de búfer en el archivo /etc/mysql/my.cnf, creo que me dejé llevar un poco. De todos modos, después de intentar cambiarlos a la configuración predeterminada, MySQL aún no se iniciará.

Intenté varios métodos diferentes para resolverlo, noté que faltaba /var/run/mysql/mysql.sock. Esto podría ser un problema, por lo que puede verificar allí y, si falta, puede reemplazarlo haciendo lo siguiente:

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

¡Esto NO me solucionó el problema! Pero puede que para algunos.

Lo que tuve que hacer fue reinstalar completamente MySQL, para hacerlo necesitarás usar el comando sudo. Los pasos para eliminar y reinstalar completamente MySQL son los siguientes:

Eliminar MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

Opcionalmente, puede usar aptitude, reemplazando apt-get --purge con aptitude

Limpiar

sudo apt-get autoremove
sudo apt-get autoclean

Eliminar el directorio MySQL

sudo rm -rf /etc/mysql

Instalar MySQL

sudo apt-get install mysql-server mysql-client

MySQL ahora debería estar ejecutándose, puede verificar esto haciendo lo siguiente:

sudo service mysql status

Debería ver

mysql start/running, process xxxxx

Espero que esto ayude, y pensé que podría agregar después de hacer esto todas mis bases de datos y tablas donde todavía estén disponibles, sin embargo, tuve que recrear los usuarios y las contraseñas para esas bases de datos.

Nota: Si tenía la extensión mysql para php, necesitará reinstalar esto también.

sudo apt-get install php5-mysql
Kyle Coots
fuente
Esto funcionó para mí, pero tuve que cambiarlo a: sudo touch /var/run/mysqld/mysqld.socky lo descubrí desde el final de /var/log/syslog (por ejemplo, cambiar a mysqld)
Programador
Es /var/run/mysqldo /var/run/mysql?
CMCDragonkai
tocar el archivo de calcetines es una mala idea: ha creado un archivo normal, cuando realmente es un socket, que es un tipo especial de archivo.
Criggie el
3

ADVERTENCIA: Esto es peligroso, su mysql NO estará seguro y cualquiera podrá conectar, editar, etc. sus tablas, no deje su servidor funcionando con este comando.

Intenta iniciarlo en modo seguro: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

Si esto funciona, puede haber problemas con su información_esquema o su (s) tabla (s) mysql. Si no funciona, algo está mal con su instalación.

lilott8
fuente
1
Esto es bueno, le da errores detallados en syslog. El comando ha cambiado, en Ubuntu 12.04 essudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000
3

Verifique sus archivos de registro como en las otras respuestas. Además, verifique que tenga suficiente (o cualquier espacio en disco). MySQL puede comportarse de esta manera en una partición vacía.

df -h

Si no es eso, consulte los documentos de MySQL sobre la depuración de un servidor . Su myisamchk(si está utilizando MyISAM) es particularmente útil.

Aidan Fitzpatrick
fuente
3

También tuve este problema recientemente después de actualizar ubuntu. Aún no estoy seguro de cuál es exactamente el problema. Sin embargo, un error que funcionó por el momento para ejecutar mysql fue:

sudo aa-complain /etc/apparmor.d/*mysql*

Eso hace que funcione, lo que indica que apparmor detuvo la ejecución de mysql y explica por qué los registros probablemente también estén vacíos: no se permitió ejecutar mysql.

Sigue siendo un problema extraño, ya que hasta ahora no hay "quejas" de esto /var/log/apparmor, y la única entrada de auditoría en kern.log es cambiar el perfil al modo de quejas.

Tenga en cuenta que al hacer esto también agregué un /etc/apparmor.d/local/usr.sbin.mysqlarchivo (vacío) ya que el aa-complain ordenó quejarse de no encontrar este archivo.

usuario143757
fuente
¡Muchas gracias! Después de acercarme a arrancarme el cabello, eso finalmente lo arregló.
Olathe
3

Tuve el mismo problema con mi gota de Océano Digital de 512 MB.

Resultó que se debe a memoria insuficiente.

Una solución inmediata es reiniciar otros servicios para liberar memoria, por ejemplo.

sudo service apache2 restart

Entonces, con suerte, con suficiente memoria, debería poder reiniciar mysql

sudo service mysql restart

La solución a largo plazo es obtener más RAM o crear memoria de intercambio .

samwize
fuente
2

Echa un vistazo a tus archivos de registro. Al menos en Debian, obtienes registros de mysql * /var/log.

innaM
fuente
3
mysql.err y mysql.log están vacíos
Andrew
1

Tenía el mismo problema, resulta que la solución me estaba mirando a la cara. La unidad estaba llena. No obtienes registros porque no hay dónde escribirlos .....

codificador de barcos
fuente
0

El mismo problema me atormentó por siglos en un Ubuntu 12.04 Digital Ocean VPS con mysql 5.6 instalado desde un PPA. Los síntomas eran que el archivo mysql.sock /var/run/mysqld/mysql.sockse eliminaría pero nunca se volvería a crear, por lo que tenía que ejecutar manualmente los siguientes comandos cada vez que se actualizaba mysql o se reiniciaba el servidor:

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

Esto fue de la respuesta de Kyle C (excepto con mysqld en lugar de mysql). Al final bajé a mysql 5.5, que viene cuando normalmente realizarías un sudo apt-get install mysql-servercomando. Sin embargo, no fue sencillo, así que esto es lo que tuve que hacer:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

Esperemos que esto ayude a alguien que tenga el mismo dolor.

Programador
fuente
0

Supongo que esto podría ayudar a otros ... así que aquí está.

Quería migrar mi mysql 5.5 (el valor predeterminado de ubuntu) al nuevo 5.7
(quería jugar con el nuevo tipo JSON nativo)

Seguí las instrucciones para instalar la última versión ...
pero MySQL no quería comenzar.

Pasé bastante tiempo buscando y luego encontré esta línea en /var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

y eso es algo que se establece en /etc/mysql/my.cnfque, durante la actualización, elegí mantener.

Entonces, bastante fácil después de eso:
reemplazó mi my.cnfcon la my.cnf.dpkg-distversión ubicada en el mismo directorio ...

Luego tuve que correr

sudo mysql_upgrade -u root -p sudo service mysql restart

y ahora MySQL vuelve a funcionar

dGo
fuente
0

Encontró otra variación de lo que puede estar mal. Moví el directorio de datos, y resultó que olvidé mostrar el directorio para el usuario de mysql, que también falla sin ningún tipo de salida. Obviamente mal en retrospectiva, pero la falta de mensaje de error hace que cada problema trivial sea difícil de encontrar.

Kdansky
fuente