web-dev-qa-db-fra.com

Erreur de démarrage du serveur MySql 'Le serveur s'est arrêté sans mettre à jour le fichier PID'

Sur Snow Leopard, le démarrage de MySQL génère l’erreur suivante:

Le serveur s'est arrêté sans mettre à jour le fichier PID

mon.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
253
Chinmay

essayez de trouver votre fichier journal avec le suffixe ".err", il devrait y avoir plus d’informations. Cela pourrait être dans:

/usr/local/var/mysql/votre_nom_ordinateur.local.err

C'est probablement un problème d'autorisations

  1. vérifie si une instance de mysql est en cours d'exécution

    ps -ef | grep mysql

    si oui, vous devriez l'arrêter ou tuer le processus

    tuer -9 PID 

    PID est le numéro affiché à côté du nom d'utilisateur à la sortie de la commande précédente

  2. vérifier la propriété de /usr/local/var/mysql/

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

    s'il est propriétaire de root, vous devriez le changer mysql ou your_user

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

259
Tombart

Avez-vous suivi les instructions de brew install mysql?

Configurez les bases de données pour qu'elles s'exécutent sous votre compte utilisateur avec:

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

Pour configurer des tables de base dans un autre dossier ou utiliser un autre utilisateur pour exécuter Mysqld, consultez l'aide de mysqld_install_db:

mysql_install_db --help

et affichez la documentation MySQL:

Pour exécuter, par exemple, l'utilisateur "mysql", vous devrez peut-être Sudo:

Sudo mysql_install_db ...options...

Démarrez mysqld manuellement avec:

mysql.server start

Remarque: si cela échoue, vous avez probablement oublié de lancer les deux premières étapes ci-dessus.

192
svs

J'ai eu le même problème sur mon ordinateur Mac (j'ai correctement suivi toutes les étapes d'installation suggérées par brew install).

La suppression du fichier d'erreur l'a corrigé pour moi:

Sudo rm -rf /usr/local/var/mysql/dev.work.err (dev.work est mon nom d'hôte)

Cela a fonctionné parce que dev.work.err était la propriété de _mysql:wheel au lieu de mon propre nom d'utilisateur . CHOWN-ing le fichier d'erreur l'aurait probablement aussi corrigé.

125
ukliviu

Après le redémarrage, j'ai eu le même problème. Voici comment je l'ai corrigé:

 Sudo chown -R _mysql /usr/local/var/mysql
81
Sam Ruberti

Cela a fonctionné pour moi ...

Vérifiez tous les processus MySQL en cours d'exécution:

$ ps aux | grep mysql

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

Ensuite, supprimez tous les processus répertoriés dans la commande ci-dessus à l'aide de ce qui suit:

$ Sudo kill -9 [PID]

Remplacez [PID] par le PID individuel de la liste ci-dessus, par exemple. 5970.

Faites cela pour toutes les lignes que vous voyez avec la première commande.

Ensuite, vous pouvez redémarrer votre serveur MySQL:

mysql.server start
30
mikoop

Mon fichier d'erreur m'indique également que le port peut être utilisé par un autre processus, mais le fait d'exécuter simplement Sudo mysql.server start corrige le problème pour moi.

23
jaredsmith

Cette erreur peut survenir lorsque vous essayez de démarrer msql après un arrêt incorrect.

  1. Jetez un coup d'œil au fichier journal des erreurs mysql. S'il mentionne quelque chose comme "Vérifiez que vous n'avez pas déjà un autre processus mysqld utilisant les mêmes données ou les mêmes fichiers journaux.", vous devez ensuite arrêter correctement ce processus.

  2. Voir quel processus mysql est en cours d'exécution, utilisez cette commande: lsof -i:3306

Votre sortie devrait ressembler à ceci: 

COMMAND  PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mysqld  4249 username   17u  IPv4 0x7843d9d130469c0b      0t0  TCP localhost:mysql (LISTEN)
  1. Terminez le processus en cours d'exécution mysql: kill -15 4249

Kill -15 envoie un message au processus pour libérer les ressources qu'il verrouille et mettre fin au processus après. 

  1. Maintenant, mysql devrait démarrer sans aucun problème: mysql.server start
23
cosbor11

Je suis récemment tombé sur ce problème, mais il fonctionnait auparavant, puis s'est arrêté.

C'est parce que j'ai initialement lancé mysql.server en tant que root à la place de moi-même.

Le correctif consistait à supprimer le fichier journal des erreurs (qui appartenait à _mysql). Le redémarrer a réussi.

15
Roland Parnaso

Si aucune réponse ne vous a aidé, supprimez simplement le dossier /usr/local/var/mysql puis réinstallez mysql brew reinstall mysql.

11
user3890355

La solution qui a fonctionné pour moi était la suivante: https://serverfault.com/questions/334284/cant-create-pid-file-on-mysql-server-permission-denied

Changer certaines de mes autorisations semblait faire l'affaire. J'utilise un Macbook Air à la mi-2012 avec OS X 10.8.2 et mysql a été installé avec homebrew.

chmod 0755 /var
chown root:wheel /var/tmp
Sudo chmod 0771 /usr/local/var/mysql/*
9
Gabe

Essayez de supprimer les fichiers ib_logfile0 et ib_logfile1, puis exécutez à nouveau mysql 

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

Ça marche pour moi.

9
user3890355

Pour moi, le correctif était simple:

top

a montré que mysqld fonctionnait déjà

Sudo killall mysqld 

puis permis au processus de démarrer

8
Luke Madhanga

J'ai eu ce problème lors de la tentative de mise à niveau sur MacOS X 10.7.5.

Malheureusement, mysql a également été mis à jour de la version 5.5.14 à la version 5.6.10. Essayé le nouveau, n'a pas fonctionné.

J'ai décidé de retourner à mon ancienne installation et a fait un

brew switch mysql 5.5.14

Cela n'a pas résolu le problème. Ailleurs, j'ai lu et fait ça, le tour est joué! Tout était de retour :)

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

Pour moi, la solution consistait à remplacer/corriger le répertoire de données dans/etc/my/cnf.

J'ai construit MySQL 5.5.27 à partir des sources avec les instructions fournies dans le fichier readme:


# 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 s'est arrêté sans explication. l'exécution de /etc/init.d/mysql.server start a entraîné l'erreur suivante:

"Le serveur s'est arrêté sans mettre à jour le fichier PID"

J'ai toutefois remarqué quelque chose d'étrange dans les instructions d'installation. Il a changé de propriétaire en mysql pour le répertoire "data", mais pas en "var"; C'est inhabituel parce que pendant des années, je devais m'assurer que le répertoire var était mysql en écriture. J'ai donc lancé manuellement chown -R mysql /usr/local/mysql/var, puis tenté de le redémarrer. Toujours pas de chance. Mais pire, pas de fichier .err dans le répertoire var - c’est dans le répertoire "data"! donc scripts/mysql_install_db définit le camp dans/usr/local/mysql/var, mais le reste de l'application semble vouloir faire son travail dans/usr/local/mysql/data!

Donc, je viens d’éditer /etc/my.cnf et sous la section [mysqld] j’ai ajouté une directive pour pointer explicitement le répertoire de données de mysql sur var (comme je l’attend normalement), et après cela, mysqld démarre juste bien. La directive à ajouter ressemble à ceci:

datadir =/usr/local/mysql/var

Travaillé pour moi J'espère que cela vous aidera.

7
SKelly

J'utilise, 

J'ai installé MySQL en utilisant homebrew ('brew install mysql'). Il a installé quelques dépendances, puis mysql.

Quand j'ai essayé de le démarrer, 

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

J'ai couru cette commande, 

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

et MySQL fonctionne.

Veuillez noter que vous devez exécuter mysql_install_db à partir du niveau supérieur du répertoire mysql (IE, usr/local/Cellar/mysql/5.5.25). L'exécuter directement dans le répertoire/scripts ne lui donne pas assez de contexte pour s'exécuter.

7
westonplatter

Démarrer Mysql en mode sans échec 

/usr/local/mysql/bin/mysqld_safe start

OU 

sur MAC Terminez toute tâche mysql ou mysqld (ou autre) dans votre application Activity Monitor.

ou vérifiez votre erreur par

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

Il semble que le processus MySQL est en cours d'exécution, vous ne pouvez donc pas utiliser le port. Vous pouvez vérifier le processus MySQL en cours d'exécution à l'aide de la commande suivante:

ps auxf | grep mysql

Si vous obtenez un processus MySQL, supprimez cet ID de processus en utilisant kill -9 PID, puis essayez de démarrer MySQL.

4
colin2328

Pour moi je devais réinstaller mysql 

brew reinstall mysql

puis ci-dessousPour avoir lancerd démarrer mysql maintenant et redémarrer à la connexion:

brew services start mysql
4
sumit

Avec l'aide de quelques réponses postées ici, j'ai pu trouver le problème

D'abord je cours 

Sudo -i

Donc, je pourrais avoir un accès root.

Puis j'ai supprimé le fichier xxxx.err

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

après avoir démarré MySQL en mode sans échec

/usr/local/mysql/bin/mysqld_safe start

Il essaiera de démarrer et se fermera à cause d'une erreur ... un nouveau fichier xxx.err sera créé et vous devrez le lire pour voir la cause de l'erreur.

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

Dans mon cas, pour une raison quelconque, il manquait un dossier et un fichier dans le dossier /var/log/ ... J'ai donc créé les deux

cd /var/log

mkdir mysql

touch mysql-bin.index

Une fois le nouveau fichier créé, vous devez modifier les autorisations.

chown -R _mysql /var/log/mysql

Lorsque toutes ces mesures ont été prises, ma base de données a commencé à fonctionner immédiatement ... 

J'espère que cela peut aider les autres ici ... La clé est de lire l'erreur et de vous connecter et de trouver ce qui ne va pas ...

4
Paulo Griiettner

Dans mon cas, l'erreur se produit en raison du problème d'accès du fichier journal des erreurs. 

Les deux commandes suivantes m'aident à résoudre le problème.

Sudo chown <user> /usr/local/var/mysql/<my-Host-name>.err
Sudo chmod 666 /usr/local/var/mysql/<my-Host-name>.err
4
FrankSu

J'espère que cela fonctionne pour vous.

Après avoir vérifié le journal des erreurs, j'ai trouvé ceci:

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

Et pour le résoudre, j’ai donné les droits de propriété sur tout le dossier 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

Puis (vous pouvez aussi le faire en ligne de commande), j’ai appliqué les permissions (une fois que j’ai donné cette propriété à _mysql et mysql users) à tous les dossiers fermés à partir du menu "obtenir des informations" de la commande. dossier à /usr/local/mysql-5.5.21-osx10.6-x86_64 . Vous n'avez pas besoin de penser à cela pour le pseudonyme puisque ce n'est qu'un pseudonyme.

Le nom du dossier dépend de la version de votre installation de mysql.

3
lu1s

Que dit le journal des erreurs? J'ai eu cette erreur, et cela a fini par être un vieux paramètre invalide dans le fichier my.cnf, ce que le journal des erreurs mysql a indiqué. S'il ne s'agit pas d'un paramètre de configuration incorrect, le journal des erreurs doit au moins vous indiquer la bonne direction.

Eh bien, je suppose que le PO a résolu le problème à ce stade ... mais j'espère que cela incitera les autres à voir cette erreur dans la bonne direction.

3
Brian Ray

Avait le même problème, pour moi, il faisait une suppression de brassage tout en ayant une installation précédente de mysqld en cours d'exécution. Semble que l'infusion n'arrête pas un service avant la désinstallation.

Après avoir vérifié le fichier .err, j'ai constaté l'erreur enregistrée qu'une autre copie de mysql était peut-être en cours d'exécution, après avoir mis fin à l'ancien service. J'ai ensuite pu redémarrer la nouvelle installation de MySQL.

3
Nudge

Essaye ça.. 

  1. Accédez au répertoire parent du problème cd YOURPATH/usr/local/mysql
  2. rm -rf *.local.err (supprime le fichier)
  3. touch YOURUSERNAME.local.pid (génère un nouveau fichier * .local.pid dont l’erreur renvoyée se plaignait)
  4. retournez dans votre projet et redémarrez mysql en utilisant mysql.server start
3
Nick Sarafa

Simple....

Corrige l'erreur 2002 MySQL Socket

Correction de l'erreur de socket 2002 imminente - qui lie où MySQL place le socket et où OSX le pense, MySQL le place dans/tmp et OSX le recherche dans/var/mysql le socket est un type de fichier qui permet au client mysql/communication serveur.

Sudo mkdir/var/mysql

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

Bien joué : ) 

Cela m'aide beaucoup! J'ai pris ce guide des gars sur http://coolestguidesontheplanet.com/

2
carloslozada

J'ai eu le même problème. déplacer mon fichier /etc/my.cnf a fonctionné pour moi. J'ai eu l'information ici

2
Nealv

Le problème est une autorisation, il ne peut pas démarrer car il ne peut pas écrire sur mac.err car il appartient à quelqu'un d'autre.

Assurez-vous que le dossier/usr/local/var/mysql appartient à l'utilisateur qui va démarrer mysql. Si je lance mysql en tant que jack, c'est tout bon. Cependant, si vous le démarrez en tant que root, il créera un fichier mac.err (appartenant à root) sur lequel la prise ne pourra pas écrire. Par conséquent, si vous essayez de le redémarrer en tant que prise, il échouera.

  1. Assurez-vous que le dossier et les fichiers appartiennent à l'utilisateur exécutant mysql.server start
  2. Assurez-vous qu'il n'y a pas déjà un mac.err ou un mac.pid appartenant à quelqu'un d'autre.
  3. Démarrer est le bon utilisateur.
2
Jack Sukerman

Dans mon cas, j'ai eu ce problème sur vps, cPanel.

J'ai essayé la plupart des réponses ci-dessus, mais pas le succès. 

  1. vérifiez où votre journal des erreurs. Cela serait mentionné à la fin de la ligne d'erreur. 

ERREUR! Le serveur s'est arrêté sans mettre à jour le fichier PID (/var/lib/mysql/111318.vps-11.com.pid).

  1. Ouvrez ce fichier (/var/lib/mysql/111318.vps-11.com.err) et examinez le bas des lignes. Dans mon cas, il y a 

[ERREUR] Erreur irrécupérable: impossible d'ouvrir et de verrouiller les tables de privilèges: la table './mysql/db' est marquée comme bloquée et doit être réparée

  1. Comment résoudre ceci: Récupérer et réparer les index de table à l'aide de la commande:

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

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

  1. (Re) démarrer votre mysql
2
Sadee

Vérifiez s'il vous reste de la place dans votre lecteur. J'ai eu ce problème quand il ne restait plus d'espace dans mon lecteur.

2
thavan

Déplacez le fichier journal nommé “ib_logfile” dans “/ var/lib/mysql” et redémarrez mysql. Parfois, mysql échouera car il a du mal à mettre à jour le fichier journal

mv /var/lib/mysql/ib_logfile* /some/tmp/folder/

Vous pouvez également supprimer ib_logfile car il sera créé automatiquement après le redémarrage de mysql

maintenant redémarrer le serveur mysql

1
Zangetsu

J'essayais de réinstaller MySQL, et j'ai en fait oublié d'arrêter le serveur de mon ancienne installation. Pour résoudre ce problème, ps -ax | grep mysql, puis kill [whatever PIDs]. Mais, encore une fois, c'est différent pour tout le monde. Comme indiqué dans les autres réponses, accédez à /usr/local/var/mysql/ et consultez votre fichier journal .err.

1
Oliver

Supprimez les fichiers * .err que vous trouvez dans le répertoire affiché dans le message d'erreur et créez le fichier dont se plaint mysql, redémarrez mysql.

1
desveladisimo

D'une manière ou d'une autre, j'ai gâché mes permissions sur El Capitan et j'ai décidé de réinstaller MySQL à partir de zéro.

J'utilise brasser sur el capitan, et a décidé de réinstaller:

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

Les autorisations de fichier sur la nouvelle installation ont changé de _mysql pour inclure mon nom d'utilisateur 

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

Dans mon cas, lorsque j'ai essayé de démarrer MySQL, j'ai reçu la même erreur: The server quit without updating PID file. Voici ce que j'ai fait pour le réparer (en utilisant Terminal):

goto /usr/local/var/mysql
Sudo rm -rf hostname.err # Delete .err file
cd /usr/local/mysql/support-files
Sudo mysql.server start # Success!
1
Shane Zhao

J'ai eu le même problème. La raison est plutot simple. J'ai installé 2 serveur mysql. Un du port Mac, l'autre du paquet téléchargé. Donc, je ne fais que suivre les instructions ici et désinstaller celui du paquet . Comment désinstaller MySQL à partir de Mac OS X? Après cela, mysql fonctionne bien.

0
Benjamin

Supprimez le fichier pid, puis redémarrez mysqld.

0
Rick James

Sur Mavericks, ce script m'a aidé:

bash <(curl -Ls http://git.io/eUx7rg)

Et puis je réinitialise mon mot de passe en fonction de https://stackoverflow.com/a/25883967/221781

0
izilotti

Dans mon installation homebrew mysql, je devais simplement déplacer les fichiers ib_logfile0 et ib_logfile1 situés dans/usr/local/var/mysql/vers un autre répertoire.

Ensuite, je viens de faire mysql.server start et tout a fonctionné.

0
gmclelland

J'ai rencontré ce problème après avoir échangé les adresses IP du serveur. La base de données fonctionnait bien avant cela. Il y avait une entrée dans /etc/my.cnf que je devais mettre à jour:

bind-address = xxx.xxx.xxx.xx

Il y avait l'ancienne adresse IP. 

0
Kamkat86

J'ai rencontré ce problème après le redémarrage et la suppression de tous les fichiers * err.

Il m'est apparu que le répertoire my.cnf.d était absent de/usr/local/etc.

Il l'a créé

mkdir /usr/local/etc/my.cnf.d

Et copiez simplement my.cnf et my.cnf.default situés dans/usr/local/etc dans ce répertoire.

Ensuite, Mysql a pu redémarrer:

cd /usr/local/var/mysql 
mysql.server start

Et MYSQL fonctionne.

0
AlUrvoy

Pourrait être lié à l'ancien processus MySQL. Vous devez le tuer et redémarrer. Parfois, cela peut être dû à un conflit dans le fichier de configuration MySQL. Essayez de le déplacer et redémarrez MySQL. Vérifiez l'URL suivante pour plus de détails.

http://linuxadministrator.pro/blog/?p=225

Merci.

0
snowman

Ce problème survient généralement lorsque vous n'avez pas installé la bibliothèque libaio.1. Installez d'abord ce paquet et recommencez l'étape mysql_install_db.

0
Vijay Kumar Kanta

Dans mon cas, le problème était que le répertoire de données mysql avait été déplacé par accident vers un répertoire incorrect (/ var/log, et non vers/var/lib). Après avoir renvoyé les données dans/var/lib/mysql et redémarré le serveur, tout est redevenu normal.

0
M_per

c'est un problème dans la version 5.5 

Voici un exemple pour la section [mysqld] de votre my.cnf:

 skip-character-set-client-handshake
 collation_server=utf8_unicode_ci
 character_set_server=utf8

fait référence à: http://dev.mysql.com/doc/refman/5.6/en/charset-server.html

0
edwin Yuan

Si vous exécutez un cluster MySQL Galera tel que Percona XtraDB Cluster, recherchez les fichiers wsrep_recovery.* dans le répertoire de données (par exemple: /var/lib/mysql).

Je recevais le même message de systemctl lorsque j'essayais de démarrer un noeud qui avait été tué par le destructeur de MOO de l'hôte, mais rien n'indiquait pourquoi le démarrage avait échoué dans les journaux normaux. Les fichiers de récupération wsrep avaient la réponse. Dans mon cas, je devais démarrer mysql avec l'indicateur suivant:

mysqld --tc-heuristic-recover=ROLLBACK
0
Robert Hunt

désactiver selinux dans /etc/selinux/config

SELINUX=disabled et redémarrez le serveur 

0
Avinash Singh