Impossibile avviare il server MySQL se il file .sock viene modificato in /etc/mysql/my.cnf


8

Ho installato MySQL Server 5.5 su Ubuntu 12.04. Sto cercando di avviare il server MySQL su un altro file calzino. Di default MySQL funziona su /var/run/mysqld/mysqld.sock.

Sto cercando di eseguire lo stesso server su /var/run/mysqld/mysqld1.sock.

Per questo ho apportato le seguenti modifiche:

  1. Modifiche a /etc/mysql/my.cnf
[cliente]
    porta = 3306
    socket = /var/run/mysqld/mysqld1.sock

[Mysqld_safe]
    socket = /var/run/mysqld/mysqld1.sock
    bello = 0

[Mysqld]
    utente = mysql
    pid-file = /var/run/mysqld/mysqld.pid
    ** socket = /var/run/mysqld/mysqld1.sock**
    porta = 3306
    basedir = / usr
    datadir = / var / lib / mysql
    tmpdir = / tmp
    lc-message-dir = / usr / share / mysql
  1. Ho anche aggiunto la seguente riga a /etc/apparmor.d/usr/sbin.mysqld

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

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

  2. Ho anche cambiato la proprietà per la directory / var / run / mysqld per l'utente mysql.

    ls -lA / var / run / | grep mysqld

    drwxrwxrwx 2 mysql mysql 40 dic 31 17:24 mysqld

Tuttavia quando provo ad avviare il server MySQL ricevo il seguente errore (come utente root)

    $ mysqld --user = mysql --verbose
    121231 18:40:56 [Nota] Il plug-in 'FEDERATED' è disabilitato.
    121231 18:40:56 InnoDB: l'heap di memoria di InnoDB è disabilitato
    121231 18:40:56 InnoDB: i mutex e gli rw_lock usano i builtin atomici GCC
    121231 18:40:56 InnoDB: le tabelle compresse usano zlib 1.2.3.4
    121231 18:40:56 InnoDB: inizializzazione pool buffer, dimensione = 128.0M
    121231 18:40:56 InnoDB: inizializzazione completata del pool di buffer
    121231 18:40:56 InnoDB: il formato file più supportato è Barracuda.
    121231 18:40:57 InnoDB: in attesa dell'avvio dei thread in background
    121231 18:40:58 InnoDB: 1.1.8 avviato; numero sequenza log 1595685
    121231 18:40:58 [Nota] Nome host server (indirizzo bind): '127.0.0.1'; porto: 3306
    121231 18:40:58 [Nota] - '127.0.0.1' si risolve in '127.0.0.1';
    121231 18:40:58 [Nota] Presa del server creata su IP: '127.0.0.1'.
   ** `121231 18:40:58 [ERRORE] Impossibile avviare il server: collegamento su socket unix: autorizzazione negata` **

    121231 18:40:58 [ERRORE] Hai già un altro server mysqld in esecuzione sul socket: 
    /var/run/mysqld/mysqld1.sock?
    121231 18:40:58 [ERRORE] Interruzione **
    121231 18:40:58 InnoDB: avvio arresto ...
    121231 18:40:58 InnoDB: spegnimento completato; numero sequenza log 1595685
    121231 18:40:58 [Nota] mysqld: spegnimento completato

Se avvio il server con il file socket predefinito, sono in grado di avviare il server. Ho cercato su Google questo problema, ma ho trovato solo soluzioni che suggeriscono che si tratti di un problema di autorizzazioni. Tuttavia le autorizzazioni sembrano soddisfacenti. Alcuni hanno suggerito che AppArmor potrebbe essere una causa, ma ho verificato che anche lo snippet sia incollato sopra.

Qualcuno può fornire alcuni indizi?

[MODIFICARE]

Vedo il seguente output in /var/log/syslog.

2 gen 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [Nota] Il plug-in 'FEDERATED' è disabilitato.
2 gen 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: l'heap di memoria di InnoDB è disabilitato
2 gen 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: mutex e rw_locks usano i builtin atomici GCC
2 gen 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: le tabelle compresse usano zlib 1.2.3.4
2 gen 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: inizializzazione pool buffer, dimensione = 128.0M
2 gen 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: inizializzazione completata del pool di buffer
2 gen 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: il formato file più supportato è Barracuda.
2 gen 12:09:35 praveshp-lt mysqld: 130102 12:09:35 InnoDB: in attesa dell'inizio dei thread in background
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 avviato; numero sequenza log 1595685
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] Nome host server (indirizzo di bind): '127.0.0.1'; porto: 3307
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] - "127.0.0.1" si risolve in "127.0.0.1";
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] Presa del server creata su IP: "127.0.0.1".
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERRORE] Impossibile avviare il server: collegamento su socket unix: autorizzazione negata
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERRORE] Hai già un altro server mysqld in esecuzione sul socket: /var/run/mysqld/mysqld1.sock?
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERRORE] Interruzione
2 gen 12:09:36 praveshp-lt mysqld: 
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: avvio arresto ...
2 gennaio 12:09:36 kernel praveshp-lt: [7060.098580] tipo = 1400 audit (1357108776.036: 33): apparmor = "DENIED" operazione = "mknod" parent = 6702 profile = "/ usr / sbin / mysqld" name = "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" request_mask = "c" denied_mask = "c" fsuid = 116 ouid = 116
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: spegnimento completato; numero sequenza log 1595685
2 gen 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] / usr / sbin / mysqld: spegnimento completato

Dice che l'autorizzazione è stata negata, tuttavia sembra che io abbia impostato le autorizzazioni giuste.


1. Controlla le autorizzazioni su /usr/local/mysqle /tmp. La necessità di essere almeno 775. 2. L'autorizzazione per la directory del database mysql nella /var/lib/cartella dovrebbe essere mysql:root ( chown mysql:root mysql)
Rinzwind

1
Ho controllato i permessi e sembrano andare bene.
user117844

controlla anche /etc/apparmor.d/usr.sbin.mysqldC'è un confronto tra la vecchia e la nuova versione qui: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…
Rinzwind

Risposte:


5

Osservando questa riga nella seguente riga nel registro, sembra che Apparmor stia negando l'accesso.

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

Per consentire ciò, aggiungi un file /etc/apparmor.d/local/usr.sbin.mysqldcon la voce seguente e riavvia MySQL.

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

Grazie a Rinzwind per averlo segnalato.


Ha! : D
Ci sono

Ho migliorato la tua risposta per utilizzare la directory delle modifiche locali di Apparmor. Evitando quello con la gestione dei pacchetti, è meno probabile che si rompa più tardi quando si eseguono aggiornamenti e simili.
gertvdijk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.