Der MySQL-Dienst kann nicht gestartet werden. Ein anderer MySQL Daemon wird bereits mit demselben UNIX-Socket ausgeführt.

  • Plesk for Linux

2016-11-16 13:09:50 UTC

2017-02-17 14:28:53 UTC

1


Anfrage einreichen

Der MySQL-Dienst kann nicht gestartet werden. Ein anderer MySQL Daemon wird bereits mit demselben UNIX-Socket ausgeführt.

Kennzeichen

Dieser Artikel gilt bei Auftreten folgender Kennzeichen:

  • MySQL startet/stoppt korrekt, wenn es mit "mysqld service restart" gestartet/gestoppt wird. Jedoch startet MySQL nicht, wenn ein Server neu gestartet wird.
  • Nach einem Upgrade von MySQL, starten die mysqld-Binärdateien gar nicht.
  • Nach Verschieben des MySQL datadir oder Änderung des Standardports startet MySQL nicht.

Für alle oben genannten Fälle gibt es ein gemeinsames Kennzeichen. Der Dienst 'mysqld' kann nicht gestartet werden und es wird folgender Fehler angezeigt:

[root@server ~]# /etc/init.d/mysqld start
Another MySQL daemon already running with the same unix socket.
Starting mysqld: [FAILED]

Ursache

Der Socket wurde nach einem nicht ordnungsgemäßen Stoppen des MySQL-Dienstes nicht entfernt.

Lösung

Es gibt verschiedene übliche Fälle, wenn die Socketdatei nicht entfernt wurde. Wenden Sie die für Ihren Fall zutreffende Lösung an.

1. Falsche Berechtigungen für das Verzeichnis '/tmp'

Die Standardberechtigungen unter Centos 6.5 sind:

    ls -ld /tmp
drwxrwxrwt 3 root root 16384 Dec 23 17:32 /tmp

Überprüfen Sie die Datei '/var/log/mysqld.log' auf Mitteilungen, die auf ein Berechtigungsproblem mit '/tmp' in CentOS 6.5 hinweisen, was den Systemstart von 'mysqld' beeinträchtigt. Dieses '/tmp' -Problem wurde wahrscheinlich von manuellen Wartungsarbeiten hervorgerufen.

131207 21:15:47 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/libexec/mysqld: Can't create/write to file '/tmp/ib0h0Wt3' (Errcode: 13)
131207 21:15:47 InnoDB: Error: unable to create temporary file; errno: 13
131207 21:15:47 [ERROR] Plugin 'InnoDB' init function returned error.
131207 21:15:47 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
131207 21:15:47 [Note] Event Scheduler: Loaded 0 events
131207 21:15:47 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.71' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution

Wenn 'mysqld' startet, erstellt es die Datei "/var/lib/mysql/mysql.sock" und stürzt dann ab, da zuvor ein Fehler in /tmp geschrieben und "/var/lib/mysql/mysql.sock" nicht geleert wurde.

Nach erfolgreichem Lösen des Berechtigungsproblems bei /tmp und Neustart von CentOS wird MySQL wieder korrekt ausgeführt.

2. MySQL fährt nicht ordnungsgemäß herunter

Wenn der MySQL-Dienst während des OS-Neustarts nicht ordnungsgemäß herunterfährt, ist die alte Datei "/var/lib/mysql/mysql.sock" noch vorhanden. Dies verhindert den Start von 'mysqld' . Einigen Anwendern ist es gelungen, diesen Fehler in einem virtuellen CentOS 6.5 KVM-Gastsystem zu reproduzieren, indem das CentOS 6.5 Hostsystem neu gestartet wurde. CentOS ist so konzipiert, dass es Gastsysteme ordnungsgemäß herunterfährt, aber dies scheint bei 'mysqld' fehlzuschlagen.

Bestätigter Red Hat Linux 6.5 Bug - https://bugzilla.redhat.com/show_bug.cgi?id=1037650

Diskussion zu dem Problem im MySQL Bug Tracker - http://bugs.mysql.com/bug.php?id=71086

Einfache Schritte zur Reproduzierung des Problems:

service mysqld start
killall -9 mysqld_safe mysqld
service mysqld start

Hinweis! Der Patch muss nicht manuell über den Bug-Link angewendet werden, da das fehlerbehobene Paket bereits ausgeliefert wurde. Aktualisieren Sie das mysql-Paket einfach:

yum -y update mysql-server

3. SELinux Policy

Im Protokoll '/var/log/mysqld.log' finden Sie Fehler wie in etwa im nachfolgenden Beispiel:

mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
...
[Warning] Can't create test file /var/lib/mysql/boxy.lower-test
[Warning] Can't create test file /var/lib/mysql/boxy.lower-test
...
[ERROR] /usr/sbin/mysqld: Can't create/write to file
'/var/lib/mysql/boxy.pid' (Errcode: 13 - Permission denied)
[ERROR] Can't start server: can't create PID file:
Permission denied
mysqld_safe mysqld from pid file /var/lib/mysql/boxy.pid ended

Wenn Sie sich sicher sind, dass die Berechtigungen für das Verzeichnis '/var/lib/mysql' korrekt sind, überprüfen Sie das Protokoll '/var/log/audit/audit.log' . Es kann Meldungen enthalten, die auf SELinux-Probleme hinweisen, z. B.:

    ...
type=AVC msg=audit(1363866652.030:24): avc: denied { write } for pid=2119
comm="mysqld" name="/var/lib/myaql" dev=dm-0 ino=394
scontext=unconfined_u:system_r:mysqld_t:s0
tcontext=unconfined_u:object_r:default_t:s0 tclass=dir
...

Um die neue Policy zu übernehmen, müssen Sie zulassen, dass MySQL das Verzeichnis '/var/lib/myaql' nutzt:

semanage fcontext -a -t mysqld_db_t "/datadir(/.*)?"
restorecon -Rv /var/lib/myaql
restorecon reset /var/lib/myaql context
unconfined_u:object_r:default_t:s0->unconfined_u:object_r:mysqld_db_t:s0
restorecon reset /var/lib/myaql/mysql.sock context
system_u:object_r:mysqld_var_run_t:s0->system_u:object_r:mysqld_db_t:s0

Zum Starten des MySQL-Dienstes können Sie '/var/lib/mysql/mysql.sock' entfernen und den MySQL-Dienst wieder starten:

  1. Socketdatei entfernen:

    [root@server ~]# rm /var/lib/mysql/mysql.sock
    rm: remove socket `/var/lib/mysql/mysql.sock'? yes
  2. MySQL-Dienst starten:

    [root@server~]# service mysqld start
    Starting mysqld: [ OK ]
Haben Sie Fragen? Anfrage einreichen
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.