web-dev-qa-db-fra.com

La tâche de mysqld.service a échoué. Voir "systemctl status mysqld.service"

Console dit

[root@ip-172-31-18-2 mysql]# service mysqld start
Starting mysqld (via systemctl):  Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

mysqld.service

[root@ip-172-31-18-2 mysql]# systemctl status mysqld.service
● mysqld.service - SYSV: MySQL database server.
   Loaded: loaded (/etc/rc.d/init.d/mysqld)
   Active: failed (Result: exit-code) since Sat 2017-02-18 20:59:17 IST; 36s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 9925 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)

Feb 18 20:59:16 ip-172-31-18-2.ap-southeast-1.compute.internal systemd[1]: Starting SYSV: MySQL database server....
Feb 18 20:59:17 ip-172-31-18-2.ap-southeast-1.compute.internal mysqld[9925]: MySQL Daemon failed to start.
Feb 18 20:59:17 ip-172-31-18-2.ap-southeast-1.compute.internal mysqld[9925]: Starting mysqld:  [FAILED]
Feb 18 20:59:17 ip-172-31-18-2.ap-southeast-1.compute.internal systemd[1]: mysqld.service: control process exited, code=exited status=1
Feb 18 20:59:17 ip-172-31-18-2.ap-southeast-1.compute.internal systemd[1]: Failed to start SYSV: MySQL database server..
Feb 18 20:59:17 ip-172-31-18-2.ap-southeast-1.compute.internal systemd[1]: Unit mysqld.service entered failed state.
Feb 18 20:59:17 ip-172-31-18-2.ap-southeast-1.compute.internal systemd[1]: mysqld.service failed.

Ce que j'ai essayé jusqu'à maintenant:

mysqld_safe --defaults-file=/etc/my.cf

chown -R mysql:mysql /var/lib/mysql

/etc/init.d/mysqld start

 /etc/init.d/mysqld stop

systemctl restart systemd-logind

redémarré le serveur

Toujours pas de chance.

fichier my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
7
Nobi

J'ai rencontré ce problème aujourd'hui, et le résoudre avec les étapes ci-dessous.

1, consultez le fichier journal /var/log/mysqld.log 

tail -f /var/log/mysqld.log

 2017-03-14T07:06:53.374603Z 0 [ERROR] /usr/sbin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 - No such file or directory)
 2017-03-14T07:06:53.374614Z 0 [ERROR] Can't start server: can't create PID file: No such file or directory

Le journal indique qu’il n’ya ni fichier ni répertoire /var/run/mysqld/mysqld.pid

2, créez le répertoire /var/run/mysqld

mkdir -p /var/run/mysqld/

3, redémarrez mysqld service mysqld start, mais échouez toujours, consultez le journal /var/log/mysqld.log

2017-03-14T07:14:22.967667Z 0 [ERROR] /usr/sbin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 13 - Permission denied)
2017-03-14T07:14:22.967678Z 0 [ERROR] Can't start server: can't create PID file: Permission denied

Il dit permission refusée.

4, Accordez l’autorisation à mysql chown mysql.mysql /var/run/mysqld/

5, redémarrez le mysqld

# service mysqld restart
Restarting mysqld (via systemctl):                         [  OK  ]
5
Adam Deng

Voici les étapes que j'ai prises pour corriger ceci:

Sauvegardez votre fichier my.cnf dans/etc/mysql et supprimez-le ou renommez-le.

Sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak

Supprimez le dossier /etc/mysql/mysql.conf.d/ en utilisant

Sudo rm -r /etc/mysql/mysql.conf.d/

Vérifiez que vous n'avez pas de fichier my.cnf caché ailleurs (je l'ai fait dans mon répertoire personnel!) Ou dans /etc/alternatives/my.cnf

Sudo find / -name my.cnf

Maintenant, réinstallez tout 

Sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
Sudo apt install mysql-server

Si votre syslog affiche une erreur du type "mysqld: impossible de lire le répertoire" /etc/mysql/conf.d/ ", créez un lien symbolique:

Sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d

Ensuite, le service devrait pouvoir démarrer avec Sudo service mysql start.

J'espère que ça marche

1
CJ-UNIq

Dans mon cas particulier, l'erreur apparaissait en raison de l'absence de /var/log/mysql avec mysql-server package 5.7.21-1 sur une distribution Linux basée sur Debian. Après avoir exécuté strace et Sudo /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (ce qui correspond au service systemd), il est devenu évident que le problème était dû à ceci:

2019-01-01T09:09:22.102568Z 0 [ERROR] Could not open file '/var/log/mysql/error.log' for error logging: No such file or directory

J'ai récemment supprimé le contenu de plusieurs répertoires dans /var/log, donc ce n'était pas une surprise. La solution consistait à créer le répertoire et à le rendre appartenant à mysql utilisateur comme dans

$ Sudo mkdir /var/log/mysql
$ Sudo chown -R mysql:mysql /var/log/mysql

Après avoir fait cela, je me suis connecté avec joie via Sudo mysql -u root et je suis accueilli par l'ancien et familier invite mysql>

0

Avait le même problème. Résolu comme indiqué ci-dessous . Utilisez la commande:

Sudo tail -f /var/log/messages|grep -i mysql

pour vérifier si la politique SELinux est à l'origine du problème. Si tel est le cas, commencez par vérifier si la stratégie SELinux est activée à l'aide de la commande #sestatus. S'il est activé, désactivez-le . Pour désactiver:

  1. # vi /etc/sysconfig/selinux 
  2. remplacez 'SELINUX = en imposant' par 'SELINUX = désactivé' 
  3. redémarrer linux 
  4. vérifier avec sestatus et il devrait afficher "désactivé"

Désinstallez et réinstallez mysql. Cela devrait fonctionner.

0
rajat saha