Error de inicio del servidor MySql 'El servidor se cerró sin actualizar el archivo PID'


284

En Snow Leopard, iniciar MySQL da el siguiente error:

El servidor se cerró sin actualizar el archivo PID

my.cnf

[mysqld]
port            = 3306

socket          = /tmp/mysql.sock

skip-external-locking

key_buffer_size = 16K

pid-file=/var/run/mysqld/mysqld.pid

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

77
corriendo como usuario administrador. con sudo /usr/local/mysql/support-files/mysql.server start
Chinmay

66
el mismo problema. MySQL instalado con brew
vrybas

20
el mismo problema aqui. También instalado con cerveza.
jspooner

11
También obtuve este caso en mi Mac, y acabo de eliminar el registro de errores, como '/usr/local/var/mysql/*.err', comenzó con éxito.
Mathew P. Jones

3
También recibí el mismo error en mac. Pero lo resolví. Si está instalado a través del archivo .dmg, vaya a las preferencias del sistema, luego haga clic en el icono mysql y luego haga clic en el botón iniciar mysql.
Amaranadh Meda

Respuestas:


276

intente encontrar su archivo de registro con el sufijo ".err", debería haber más información. Puede estar en:

/usr/local/var/mysql/your_computer_name.local.err

Probablemente sea un problema con los permisos

  1. comprobar si se está ejecutando alguna instancia de mysql

    ps -ef | grep mysql

    en caso afirmativo, debe detenerlo o finalizar el proceso

    matar -9 PID

    donde PIDse muestra el número junto al nombre de usuario en la salida del comando anterior

  2. verificar la propiedad de /usr/local/var/mysql/

    ls -laF / usr / local / var / mysql /

    si es dueño de rootusted debe cambiarlo mysqloyour_user

    sudo chown -R mysql / usr / local / var / mysql /


24
Tuve que elegir un usuario de mysql en lugar de mi usuario.
Jared

3
trabajó para mi. Revisé el archivo de error y dije que era debido a los permisos del archivo. ejecutó el comando chown y funcionó. ¡¡Gracias!!
Packet Tracer

2
sudo chown -R my_user / usr / local / var / mysql / trabajó para mí al menos
Bjørn Børresen

Desde mi propia experiencia, tenga cuidado de que después de haber realizado el sudo chown, actualmente no tenga algunos procesos mysql ejecutándose bajo otro usuario o root. ps -ef | grep mysql validará que no tienes nada ejecutándose; de ​​lo contrario, no podrás iniciarlo.
Arthur Frankel

1
Total salvavidas. Mi única observación es que la ruta del archivo a la carpeta mysql puede variar.
ALisboa

198

¿Seguiste las instrucciones de brew install mysql?

Configure bases de datos para ejecutar COMO SU CUENTA DE USUARIO con:

Para mysql 5.x:

unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

Para configurar tablas base en otra carpeta, o usar un usuario diferente para ejecutar mysqld, consulte la ayuda para mysqld_install_db:

mysql_install_db --help

y ver la documentación de MySQL:

Para mysql 8.x:

unset TMPDIR
mysqld --initialize-insecure --log-error-verbosity --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

Asegúrese de que el directorio de datos /usr/local/var/mysqlanterior esté vacío, haga una copia de seguridad si es necesario.

Para ejecutar, por ejemplo, el usuario "mysql", es posible que deba sudo:

sudo mysql_install_db ...options...

Inicie mysqld manualmente con:

mysql.server start

Nota: si esto falla, probablemente olvidó ejecutar los dos primeros pasos arriba


78
Si recibe repetidamente el mismo error incluso después de seguir los pasos de la salida, elimine el archivo * .err del mismo directorio que el archivo * .pid. mahdiyusuf.com/post/21022913180/…
ekillaby

66
Intenté seguir estas instrucciones un millón de veces, pero nunca pude hacerlo funcionar. Traté de "hacer trampa" al no limpiar todas las cosas sobre las que me advirtió el médico, ya que pensé que no hacían la diferencia. Al final, limpiar y seguir los consejos breves de los médicos hizo posible ejecutar la configuración descrita anteriormente. Entonces, una nota para cualquiera que pase; ¡no trates de engañar al doctor cervecero y pienses que sabes mejor!
abarcan el

9
Todavía tengo un montón de cosas mal cuando preparo el doctor y agregar permiso de escritura a mi propio usuario hizo el truco. sudo chown -R your_user /usr/local/var/mysql/igual que la respuesta de
@Tombart

1
@countfloortiles ¡Sí! Eliminar el archivo de error lo hizo. :-)
ott--

66
El mysqld_install_dbcomando me da el errormysql_install_db: [ERROR] unknown variable 'tmpdir=/tmp'
Snowcrash

125

Tuve el mismo problema en mi máquina Mac (seguí correctamente todos los pasos de instalación sugeridos por brew install).

Eliminar el archivo de error lo arregló para mí:

sudo rm -rf /usr/local/var/mysql/dev.work.err( dev.workes mi nombre de host)

Esto funcionó porque dev.work.errera propiedad de en _mysql:wheellugar de mi propio nombre de usuario. Al hacer clic en el archivo de error, probablemente también lo habría solucionado.


2
Esto también resolvió mi problema, después de reiniciar mysql ya no podía funcionar, dándome este mismo problema, pero eliminando el registro de errores que era propiedad de _mysql: admin resolvió el problema
user980085

55
Esto pareció ser lo más útil, me hizo darme cuenta de que no debería comenzar este servicio con SUDO sino ejecutarlo bajo mi propia cuenta de usuario.
Bnjmn

3
Esta es una respuesta bastante buena para aquellos que han instalado MySQL usando Homebrew
Stephane Paquet

Después de semanas de probar cosas diferentes, cuando eliminé el archivo de error, todo comenzó a funcionar. Gracias
DF

No tuve que eliminarlo, simplemente lo devolví a mi cuenta, porque en algún lugar _mysql account se hizo cargo.
Sammy Larbi

90

Después de reiniciar tuve el mismo problema. Así es como lo arreglé:

 sudo chown -R _mysql /usr/local/var/mysql

muchas gracias, no se olvide de hacer copias de seguridad de las cosas, en caso de que esté jugando con los permisos
m02ph3u5

Gracias. Estaba teniendo un problema con Lampp en Ubuntu. Copié toda la carpeta lampp de / opt a un nuevo servidor. Cuando intenté iniciar mysql recibí un mensaje: El servidor se cerró sin actualizar el archivo PID. Vaya a lampp / var / y haga chown -R mysql mysql / ¡Eso funcionó para mí!
Dave

66
Gracias, eres mi héroe;)
Fareed Alnamrouti

Muchas gracias amigo! ¡Salvó el día!
Masiar

8
En El Capitán esto funcionó:sudo chown -R _mysql /usr/local/mysql/data
Justin

33

Esto funcionó para mí ...

Verifique todos los procesos de MySQL que se ejecutan:

$ ps aux | grep mysql

USER     PID    %CPU  %MEM 
_mysql   5970   0.0   0.4 ...

Luego elimine todos los procesos enumerados desde el comando anterior utilizando lo siguiente:

$ sudo kill -9 [PID]

Reemplace [PID]con el PID individual de la lista anterior, por ejemplo 5970.

Haga eso para todas las líneas que ve con el primer comando.

Luego puede volver a iniciar su servidor MySQL:

mysql.server start

o use pkill mysqlpara matar todos los procesos que coincidan con "mysql" ( -9es innecesario en la mayoría de los casos).
bfontaine

killall procesar con ID específica y comenzar de nuevo
Anupam Maurya

26

Este error puede ocurrir al intentar iniciar msql después de que se apagó incorrectamente.

  1. Eche un vistazo al archivo de registro de errores mysql. Si menciona algo como "Verifique que no tenga otro proceso mysqld usando los mismos datos o archivos de registro". , entonces debe cerrar correctamente ese proceso.

  2. Vea en qué proceso se ejecuta mysql, use este comando: lsof -i:3306

Su salida debería verse así:

COMMAND  PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mysqld  4249 username   17u  IPv4 0x7843d9d130469c0b      0t0  TCP localhost:mysql (LISTEN)
  1. Termine el proceso ejecutando mysql: kill -15 4249

Kill -15 envía una señal al proceso para liberar los recursos que está bloqueando y finalizar el proceso después.

  1. Ahora mysql debería iniciarse sin problemas: mysql.server start

Esto todavía funciona para mí en High Sierra, por lo que sea que valga la pena.
Jonathan Stegall

24

Mi archivo de error también me dijo que el puerto puede estar siendo utilizado por otro proceso, pero simplemente ejecutarlo sudo mysql.server startsolucionó el problema.


sí ... esto también funcionó para mí ... y nada de lo anterior funcionó
Prashant

Estaba siguiendo las instrucciones que había leído en alguna parte, la forma de iniciar MySQL en una Mac es 'sudo /usr/local/mysql/support-files/mysql.server start'. Eso produjo el error "el servidor se cerró sin actualizar el archivo pid", y así es como llegué a esta página. Después de probar numerosas respuestas, encontré 'sudo mysql.server start' y funcionó. Gracias.
rodmclaughlin

19

Trate de eliminar ib_logfile0y ib_logfile1archivos y luego ejecutar MySQL de nuevo

rm /usr/local/var/mysql/ib_logfile0
rm /usr/local/var/mysql/ib_logfile1

Esto funciona para mi.


1
También eliminé el .errarchivo en el mismo directorio, que funcionó para mí.
Anthony al

Bien. Esto es muy simple y realmente funciona para mí. Pero, en mi caso, solo lo ib_log*.bak
renombré

18

Si ninguna respuesta lo ayudó, simplemente elimine la carpeta /usr/local/var/mysqly luego instale mysql nuevamente brew reinstall mysql.


9
ADVERTENCIA eso significa borrar todas las bases de datos.
theredled

Instalo una versión superior mysql antes que la que instalo mysql5.7 y se produce este problema. Simplemente elimine / usr / local / var / mysql y brew reinstall mysql@.57resuélvalo.
Pegasus

Mueva los dbs debajo de / usr / local / var / mysql a otra carpeta primero. Después de la instalación e iniciar el servicio mysql con éxito, intente mover db necesario de nuevo.
civic.LiLister

15

Recientemente me encontré con este problema, sin embargo, estaba funcionando antes, luego me detuve.

Esto fue porque inicialmente comencé mysql.servercomo root en lugar de mí mismo.

La solución fue eliminar el archivo de registro de errores (que era propiedad de _mysql). Comenzarlo de nuevo lo aprobó.


¡Gracias! Tuve el mismo problema buscando durante una hora y luego encontré tu respuesta.
VOLAR

11

Para mí tuve que reinstalar mysql

brew reinstall mysql

y luego debajo Para iniciar, inicie mysql ahora y reinicie al iniciar sesión:

brew services start mysql


10

Para mí, la solución fue simple:

top

mostró que mysqld ya se estaba ejecutando

sudo killall mysqld 

luego permitió que el proceso comenzara


8

Tuve este problema al intentar preparar la actualización en MacOS X 10.7.5.

Lamentablemente, mysql también se actualizó a 5.6.10 desde 5.5.14. Probé lo nuevo, no funcionó.

Decidí volver a mi configuración anterior e hice un

brew switch mysql 5.5.14

Esto no resolvió el problema. En otra parte leí e hice esto, ¡voila! Todo estaba de vuelta :)

cd /usr/local/var/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak

Esto funcionó para mí después de usar primero brew upgrade mysqly luego brew switch mysql 5.7.17cuál era mi versión anterior. ¡Extraño!
Jorge Orpinel

7

Estoy usando,

Instalé MySQL usando homebrew ('brew install mysql'). Instaló un par de dependencias y luego mysql.

Cuando intenté iniciarlo,

west$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/west.local.pid).

Ejecuté este comando

west$ /usr/local/Cellar/mysql/5.5.25/scripts/mysql_install_db 

y MySQL funciona.

Tenga en cuenta que necesita ejecutar mysql_install_db desde el nivel superior del directorio mysql (IE, usr / local / Cellar / mysql / 5.5.25). Ejecutarlo directamente dentro del directorio / scripts no le da suficiente contexto para que se ejecute.


Trabajó para mí con 5.5.28 y preparé en OSX 10.7.5
ch3rryc0ke

7

Para mí, la solución era anular / corregir el directorio de datos en / etc / my / cnf.

Construí MySQL 5.5.27 desde la fuente con las instrucciones proporcionadas en el archivo Léame:


# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions

# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data

# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &

# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

mysqld_safe terminó sin explicación. corriendo/etc/init.d/mysql.server start resultó en el error:

"El servidor se cerró sin actualizar el archivo PID"

Sin embargo, noté algo extraño en las instrucciones de instalación. Se ha cambiado la propiedad a mysql para el directorio "datos", pero no a "var"; Esto es inusual porque durante años he tenido que asegurarme de que el directorio var fuera MySQL escribible. Entonces corrí manualmentechown -R mysql /usr/local/mysql/var y luego intenté comenzar de nuevo. Aún sin suerte. Pero lo que es peor, no hay ningún archivo .err en el directorio var, ¡estaba en el directorio "data"! entonces scripts / mysql_install_db establece el campamento en / usr / local / mysql / var, ¡pero el resto de la aplicación parece querer hacer su trabajo en / usr / local / mysql / data!

Así que acabo de editar /etc/my.cnf y en la sección [mysqld] agregué una directiva para señalar explícitamente el directorio de datos de mysql a var (como normalmente espero que sea de cualquier manera), y después de hacerlo, mysqld se inicia solo multa. La directiva para agregar se ve así:

datadir = / usr / local / mysql / var

Trabajó para mi. Espero que te ayude.


5

Parece que el proceso de MySQL se está ejecutando, por lo tanto, no puede usar el puerto. Puede verificar el proceso en ejecución de MySQL con el siguiente comando:

ps auxf | grep mysql

Si obtiene algún proceso de MySQL, elimine esa ID de proceso utilizando kill -9 PID y luego intente iniciar MySQL.


Esta respuesta es mi salvador.
Sangbeom Han

5

Inicie Mysql en modo seguro

/usr/local/mysql/bin/mysqld_safe start

O

en MAC Final cualquier mysqlo mysqldtarea (o de otro tipo) en su aplicación Monitor de actividad.

o comprueba tu error por

tail -f /usr/local/mysql/data/XXXXX-XXXXX-Pro.local.err

4

¿Qué dice el registro de errores? Recibí este error y terminó siendo una configuración inválida antigua en my.cnf, que indicaba el registro de errores de mysql. Si no es una configuración incorrecta, el registro de errores al menos debería apuntarlo en la dirección correcta.

Bueno, supongo que el OP lo ha solucionado en este punto ... pero espero que esto indique que los demás ven este error en la dirección correcta.


4

Con la ayuda de algunas respuestas publicadas aquí, pude encontrar el problema

Primero corro

sudo -i

Entonces podría tener acceso de root.

Luego eliminé el archivo xxxx.err

rm -rf /usr/local/mysql/data/xxxx.err

después de que comencé MySQL en SafeMode

/usr/local/mysql/bin/mysqld_safe start

Intentará iniciarse y se cerrará debido a un error ... se creará un nuevo archivo xxx.err y deberá leerlo para ver la causa del error

tail -f /usr/local/mysql/data/mysqld.local.err

En mi caso, por alguna razón, faltaba alguna carpeta y archivo dentro de la /var/log/carpeta ... Así que creé ambos

cd /var/log

mkdir mysql

touch mysql-bin.index

Después de crear el nuevo archivo, debe cambiar el permiso

chown -R _mysql /var/log/mysql

Cuando se tomaron todos esos pasos, mi base de datos comenzó a funcionar de inmediato ...

Espero que esto pueda ayudar a otros aquí ... La clave es leer el error y registrar y encontrar qué está mal ...


4

En mi caso, el error ocurre debido al problema de acceso del archivo de registro de errores.

Los siguientes dos comandos me ayudan a resolver el problema.

sudo chown <user> /usr/local/var/mysql/<my-host-name>.err
sudo chmod 666 /usr/local/var/mysql/<my-host-name>.err

3

Espero que esto funcione para ti.

Después de verificar el registro de errores, encontré esto:

120309 17:42:49 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120309 17:42:50 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
120309 17:42:50 [Warning] You need to use --log-bin to make --binlog-format work.
120309 17:42:50 [Note] Plugin 'FEDERATED' is disabled.
120309 17:42:50 InnoDB: The InnoDB memory heap is disabled
120309 17:42:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120309 17:42:50 InnoDB: Compressed tables use zlib 1.2.3
120309 17:42:50 InnoDB: Initializing buffer pool, size = 16.0M
120309 17:42:50 InnoDB: Completed initialization of buffer pool
120309 17:42:50  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /usr/local/mysql/data/ib_logfile0
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
120309 17:42:50 mysqld_safe mysqld from pid file /usr/local/mysql/data/lu1s.local.pid ended

Y para resolverlo, le di derechos de propiedad a toda la carpeta mysql:

cd /usr/local
sudo chown mysql mysql
sudo chown mysql mysql-5.5.21-osx10.6-x86_64
sudo chown _mysql mysql
sudo chown _mysql mysql-5.5.21-osx10.6-x86_64

Luego (también puede hacerlo desde la línea de comandos), apliqué los permisos (una vez que otorgué esa propiedad a los usuarios de _mysql y mysql ) a todas las carpetas incluidas desde el menú "obtener información" de la carpeta en / usr / local / mysql -5.5.21-osx10.6-x86_64 . No es necesario que le digas eso al alias ya que es solo un alias.

El nombre de la carpeta depende de la versión de instalación de mysql que tenga.


3

Yo tuve el mismo problema. mover mi archivo /etc/my.cnf funcionó para mí. Tengo la informacion aqui


3

Tuve el mismo problema, para mí fue hacer una eliminación de cerveza mientras se ejecutaba una instalación anterior de mysqld. Parece que brew no detiene un servicio antes de desinstalarlo.

Después de verificar el archivo .err, vi el error registrado de que podría estar ejecutándose otra copia de mysql, después de finalizar el servicio anterior. Luego pude reiniciar la nueva instalación de mysql.


Sí, verifique los registros de errores. En mi caso, corrí ls -latr /usr/local/var/mysql/para encontrar el último archivo modificado, que incluía el registro de errores, y luego tail -50 name.errpara ver el error, que era un problema en la configuración.
mahemoff

gracias dios, tenías razón. Solía ps aux | grep mysqldy después se terminó el proceso con kill -9 [proccessid]y el servidor se ha iniciado satisfactoriamente
Sagish

3

Sencillo....

Solucione el error 2002 de MySQL Socket

Solucione el inminente error de socket de 2002, que es un enlace donde MySQL coloca el socket y donde OSX cree que debería estar, MySQL lo coloca en / tmp y OSX lo busca en / var / mysql el socket es un tipo de archivo que permite el cliente mysql / comunicación del servidor.

sudo mkdir / var / mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Bien hecho : )

Esto me ayuda mucho! Tomé esta guía de los chicos en http://coolestguidesontheplanet.com/


3

Prueba esto..

  1. Navegue al directorio padre del problema cd YOURPATH/usr/local/mysql
  2. rm -rf *.local.err (elimina el archivo)
  3. touch YOURUSERNAME.local.pid (genera un nuevo archivo * .local.pid del que se arrojó el error quejándose)
  4. cd de nuevo en su proyecto y reinicie mysql usando mysql.server start

1
Esto funcionó para mí. La razón es que el error.logarchivo era propiedad de "_mysql" arrojando errores en los registros. Solo quería registrar eso en caso de que alguien más tenga este problema. 150818 19:32:06 mysqld_safe Logging to '/opt/boxen/log/mysql/error.log'. 150818 19:32:06 mysqld_safe Starting mysqld daemon with databases from /opt/boxen/data/mysql /opt/boxen/homebrew/bin/mysqld_safe: line 129: /opt/boxen/log/mysql/error.log: Permission denied
Donovan

Esto no funciona si su problema está relacionado con los permisos, que arroja el mismo error mysql.
mpoletto

Me funcionó a mi también. También tuve que reiniciar mi apache (para aquellos que también usan una pila LAMP).
Tommyixi

3

De alguna manera arruiné mis permisos en El Capitan y decidí reinstalar MySQL desde cero.

Utilizo brew en el capitan, y decidí reinstalar:

brew uninstall mysql
sudo rm -rf /usr/local/var/mysql
brew install mysql
mysql.server start # ... SUCCESS

Los permisos de archivo en la instalación nueva cambiaron _mysqlpara incluir mi nombre de usuario

 ls -alh /usr/local/var/mysql
drwxr-xr-x   22 lfender  admin   748B Mar 22 09:58 .
# ... etc

2

Compruebe si le queda espacio en su disco. Tengo este problema cuando no queda espacio en mi disco.


Nunca hubiera pensado en el problema del espacio si no lo hubieras mencionado. Eres un salvador!
Kshitij Bajracharya

2

El problema es de permisos, no puede comenzar porque no puede escribir en mac.err porque es propiedad de otra persona.

Asegúrese de que la carpeta / usr / local / var / mysql es propiedad del usuario que iniciará mysql. Si empiezo mysql como jack, todo está bien. Sin embargo, si lo inicia como root, creará un archivo mac.err (propiedad de root) en el que jack no puede escribir, por lo que cuando intente reiniciarlo como jack, fallará.

  1. Asegúrese de que la carpeta y los archivos sean propiedad del usuario que ejecuta mysql.server start
  2. Asegúrese de que no haya un mac.err o mac.pid propiedad de otra persona.
  3. Inicio es como el usuario correcto.

Usé chown -R <user_name> / usr / local / var / mysql y funcionó muy bien. Buena solución
mbokil

2

En mi caso, obtuve este problema en vps, cPanel .

Intenté la mayoría de las respuestas anteriores, pero no el éxito.

  1. verifica dónde está tu registro de errores. Sería mencionado al final de la línea de error.

¡ERROR! El servidor se cerró sin actualizar el archivo PID (/var/lib/mysql/111318.vps-11.com.pid).

  1. Abra ese archivo (/var/lib/mysql/111318.vps-11.com.err) y revise la parte inferior para ver las líneas posteriores. En mi caso, hay

[ERROR] Error grave: no se pueden abrir y bloquear tablas de privilegios: la tabla './mysql/db' está marcada como bloqueada y debe repararse

  1. Cómo resolver esto: Recuperando y arreglando los índices de la tabla por comando:

[~] # myisamchk -r /var/lib/mysql/mysql/db.MYI

https://forums.cpanel.net/threads/mysql-is-not-running.407142/

  1. (Re) Comience su mysql
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.