Der MySQL-Server kann nicht gestartet werden, wenn die Sock-Datei in /etc/mysql/my.cnf geändert wird


8

Ich habe MySQL Server 5.5 unter Ubuntu 12.04 installiert. Ich versuche, den MySQL-Server auf einer anderen Sock-Datei zu starten. Standardmäßig läuft MySQL unter /var/run/mysqld/mysqld.sock.

Ich versuche, denselben Server unter /var/run/mysqld/mysqld1.sock auszuführen.

Hierzu habe ich folgende Änderungen vorgenommen:

  1. Änderungen an /etc/mysql/my.cnf
[Klient]
    Port = 3306
    Socket = /var/run/mysqld/mysqld1.sock

[mysqld_safe]
    Socket = /var/run/mysqld/mysqld1.sock
    schön = 0

[mysqld]
    user = mysql
    pid-file = /var/run/mysqld/mysqld.pid
    ** socket = /var/run/mysqld/mysqld1.sock**
    Port = 3306
    basedir = / usr
    datadir = / var / lib / mysql
    tmpdir = / tmp
    lc-messages-dir = / usr / share / mysql
  1. Ich habe auch die folgende Zeile zu /etc/apparmor.d/usr/sbin.mysqld hinzugefügt

    /var/run/mysqld/mysqld1.sock w,

    /var/run/mysqld/mysqld[1-9‹.sock w,

  2. Ich habe auch den Besitz für das Verzeichnis / var / run / mysqld in mysql user geändert.

    ls -lA / var / run / | grep mysqld

    drwxrwxrwx 2 mysql mysql 40 Dec 31 17:24 mysqld

Wenn ich jedoch versuche, den MySQL-Server zu starten, wird der folgende Fehler angezeigt (als Root-Benutzer)

    $ mysqld --user = mysql --verbose
    121231 18:40:56 [Hinweis] Das Plugin 'FEDERATED' ist deaktiviert.
    121231 18:40:56 InnoDB: Der InnoDB-Speicherheap ist deaktiviert
    121231 18:40:56 InnoDB: Mutexe und rw_locks verwenden GCC-Atom-Builtins
    121231 18:40:56 InnoDB: Komprimierte Tabellen verwenden zlib 1.2.3.4
    121231 18:40:56 InnoDB: Pufferpool wird initialisiert, Größe = 128,0 MB
    121231 18:40:56 InnoDB: Initialisierung des Pufferpools abgeschlossen
    121231 18:40:56 InnoDB: Das am höchsten unterstützte Dateiformat ist Barracuda.
    121231 18:40:57 InnoDB: Warten auf den Start der Hintergrund-Threads
    121231 18:40:58 InnoDB: 1.1.8 gestartet; Protokollsequenznummer 1595685
    121231 18:40:58 [Hinweis] Server-Hostname (Bindungsadresse): '127.0.0.1'; Port: 3306
    121231 18:40:58 [Hinweis] - '127.0.0.1' wird in '127.0.0.1' aufgelöst;
    121231 18:40:58 [Hinweis] Server-Socket erstellt unter IP: '127.0.0.1'.
   ** `121231 18:40:58 [FEHLER] Server kann nicht gestartet werden: An Unix-Socket binden: Berechtigung verweigert` **

    121231 18:40:58 [FEHLER] Haben Sie bereits einen anderen mysqld-Server, der auf dem Socket ausgeführt wird: 
    /var/run/mysqld/mysqld1.sock?
    121231 18:40:58 [FEHLER] Abbruch **
    121231 18:40:58 InnoDB: Herunterfahren starten ...
    121231 18:40:58 InnoDB: Herunterfahren abgeschlossen; Protokollsequenznummer 1595685
    121231 18:40:58 [Hinweis] mysqld: Herunterfahren abgeschlossen

Wenn ich den Server mit der Standard-Socket-Datei starte, kann ich den Server starten. Ich habe über dieses Problem gegoogelt, aber nur Lösungen gefunden, die darauf hindeuten, dass es sich um ein Berechtigungsproblem handelt. Die Berechtigungen scheinen jedoch in Ordnung zu sein. Einige haben vorgeschlagen, dass AppArmor eine Ursache sein könnte, aber ich habe das auch überprüft - Snippet ist oben eingefügt.

Kann jemand Hinweise geben?

[BEARBEITEN]

Ich sehe die folgende Ausgabe in /var/log/syslog.

2. Januar 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [Hinweis] Das Plugin 'FEDERATED' ist deaktiviert.
2. Januar 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Der InnoDB-Speicherheap ist deaktiviert
2. Januar 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Mutexe und rw_locks verwenden GCC-Atom-Builtins
2. Januar 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Komprimierte Tabellen verwenden zlib 1.2.3.4
2. Januar 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Initialisierung des Pufferpools, Größe = 128,0 MB
2. Januar 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Initialisierung des Pufferpools abgeschlossen
2. Januar 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Das am höchsten unterstützte Dateiformat ist Barracuda.
2. Januar 12:09:35 praveshp-lt mysqld: 130102 12:09:35 InnoDB: Warten auf den Start der Hintergrund-Threads
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 gestartet; Protokollsequenznummer 1595685
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Hinweis] Server-Hostname (Bindungsadresse): '127.0.0.1'; Port: 3307
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Anmerkung] - '127.0.0.1' wird in '127.0.0.1' aufgelöst;
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Hinweis] Server-Socket erstellt unter IP: '127.0.0.1'.
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [FEHLER] Server kann nicht gestartet werden: Auf Unix-Socket binden: Berechtigung verweigert
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [FEHLER] Haben Sie bereits einen anderen mysqld-Server auf Socket: /var/run/mysqld/mysqld1.sock?
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [FEHLER] Abbruch
2. Januar 12:09:36 praveshp-lt mysqld: 
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: Herunterfahren starten ...
2. Januar 12:09:36 praveshp-lt-Kernel: [7060.098580] type = 1400 audit (1357108776.036: 33): apparmor = "DENIED" operation = "mknod" parent = 6702 profile = "/ usr / sbin / mysqld" name = "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" request_mask = "c" verweigert_mask = "c" fsuid = 116 ouid = 116
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: Herunterfahren abgeschlossen; Protokollsequenznummer 1595685
2. Januar 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Hinweis] / usr / sbin / mysqld: Herunterfahren abgeschlossen

Es heißt, die Erlaubnis wurde verweigert, aber ich habe anscheinend die richtigen Berechtigungen festgelegt.


1. Überprüfen Sie die Berechtigungen für /usr/local/mysqlund /tmp. Die Notwendigkeit muss mindestens 775 sein. 2. Die Berechtigung für das MySQL-Datenbankverzeichnis unter dem /var/lib/Ordner sollte mysql:root ( chown mysql:root mysql) sein
Rinzwind

1
Ich habe die Berechtigungen überprüft und sie scheinen in Ordnung zu sein.
user117844

Überprüfen Sie auch /etc/apparmor.d/usr.sbin.mysqldEs gibt hier einen Vergleich zwischen alter und neuer Version: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…
Rinzwind

Antworten:


5

Wenn Sie sich diese Zeile in der folgenden Zeile des Protokolls ansehen, scheint Apparmor den Zugriff zu verweigern.

Jan  2 12:09:36 praveshp-lt kernel: [ 7060.098580] type=1400 audit(1357108776.036:33):
     apparmor="DENIED" operation="mknod" parent=6702 profile="/usr/sbin/mysqld" 
     name="/run/mysqld/mysqld1.sock" pid=7039 comm="mysqld" requested_mask="c"
     denied_mask="c" fsuid=116 ouid=116

Fügen Sie dazu eine Datei /etc/apparmor.d/local/usr.sbin.mysqldmit dem folgenden Eintrag hinzu und starten Sie MySQL neu.

/var/run/mysqld/mysqld1.sock w,

Vielen Dank an Rinzwind für diesen Hinweis.


Ha! : D Hat ein bisschen gesucht;)
Rinzwind

Ich habe Ihre Antwort verbessert, um das lokale Änderungsverzeichnis von Apparmor zu verwenden. Wenn Sie das Problem mit Ihrer Paketverwaltung vermeiden, ist es weniger wahrscheinlich, dass dies später bei Upgrades und dergleichen unterbrochen wird.
Gertvdijk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.