Impossibile creare il file /var/lib/mysql/user.lower-test


11

Il database MySQL è stato privo di problemi per alcuni mesi. Oggi, quando ho verificato la presenza di pacchetti aggiornabili utilizzando Synaptic Package Manager, ho trovato i vari componenti MySQL (-common, -client, -server, ecc.). Ho quindi deciso di aggiornare (ho dimenticato di annotare la versione installata ma penso che fosse 5.6.21) a 5.6.25-1-ubuntu2.0. Successivamente quando sono andato a interrogare il database ho ricevuto il messaggio: -

Error occured: Can't connect to MySQL server on '127.0.0.1' (111)

Ho quindi scoperto che il server non era in esecuzione. Nel file di registro mi piace che il messaggio: -

Can't create file /var/lib/mysql/user.lower-test

Ho trascorso circa un'ora a cercare online e sebbene il problema sia stato segnalato in precedenza, non l'ho visto nel contesto di un problema di "post-aggiornamento", quindi non sono sicuro del mio prossimo passo.

Risposte:


6

Questo problema sembra consentire problemi o modificare la directory dei dati mysql in un'altra posizione quindi / var / lib / mysql.

Prova a correre con sudo

Sembra che / var / lib / mysql sia di proprietà dell'utente mysql e anche il gruppo sia impostato su mysql.

$ sudo chown -R mysql /var/lib/mysql
$ sudo chgrp -R mysql /var/lib/mysql
$ sudo chmod 755 /var/lib/mysql

Hai verificato che la directory / var / lib / mysql esiste effettivamente e corrisponde alla tua directory di dati? In caso contrario, probabilmente è necessario specificare altrimenti il ​​parametro datadir nella sezione mysqld

[mysqld]
datadir=/var/lib/mysql

Quindi puoi scegliere tra configurare apparmor per consentire a MySQL di leggere \ eseguire \ modificare la nuova directory di dati e le sottodirectory o, a tuo rischio e pericolo, puoi rimuovere apparmor. Potrebbe essere necessario essere root per eseguire le seguenti operazioni:

/etc/init.d/apparmor stop
/etc/init.d/apparmor teardown
update-rc.d -f apparmor remove
apt-get purge apparmor
reboot

Ho passato tutto questo, ma senza risultati. Avendo i backup ho deciso di reinstallare e tutto funziona a meno di un problema che ho riscontrato. Ma è il problema Linux o è MySQL ...
MichaelJohn,

@MichaelJohn non posso dire nulla. potrebbe essere corruzione del pacchetto apparmor o mysql
Hitesh Mundra,

Su Ubuntu Xenial: apparmorviene installato e abilitato automaticamente al momento dell'installazione mysql-server-5.6. Anche se lo hai precedentemente disattivato. Non è possibile rimuovere il apparmorpacchetto perché è una dipendenza di mysql-server-5.6. Puoi risolvere l'errore "Impossibile creare il file /var/lib/mysql/user.lower-test" facendoservice apparmor stop; service apparmor teardown; update-rc.d -f apparmor remove
Jeroen Vermeulen - MageHost

5

Ho riscontrato questo problema durante il tentativo di eseguire più istanze di MySQL, ma invece di rimuovere apparmor, ho aggiornato il file usr.sbin.mysqld:

vim /etc/apparmor.d/usr.sbin.mysqld

Ad esempio, ecco come appare il mio file e, una volta aggiunte le cartelle che richiedono autorizzazioni di scrittura, tutto ha funzionato come dovrebbe.

/usr/sbin/mysqld {

  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/*.cnf r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/lib/mysql1/ r,
  /var/lib/mysql1/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /var/run/mysqld/mysqld1.pid rw,
  /var/run/mysqld/mysqld1.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,

  /sys/devices/system/cpu/ r,

}

1
Questo ha funzionato anche per me. Ho dovuto riavviare il server per farlo funzionare - basta arrestare e riavviare AppArmour non ha funzionato.
MikeHoss,

3

Il problema si è verificato quando ho provato a spostare / var / lib / mysql su un altro disco e sostituire la directory originale con un collegamento simbolico.

Apparmor negherà l'accesso in questa configurazione, vedere

perché questo non è considerato un bug dagli sviluppatori Apparmor. Il problema consiste nell'utilizzare un attacco bind. Vedere

per una spiegazione.

Così

mount --bind /newmysqldatadir /var/lib/mysql
service mysql start

risolto il problema per me.


1

Ho avuto un problema simile. Ho reinstallato Ubuntu Server sul mio computer, ho eseguito un backup completo di / etc / su un disco rigido, dopo aver reinstallato ho creato una copia di tutti i file importanti da / drive / etc / sui miei sistemi / etc.

Nel fare ciò, ho creato un bak per il file usr.sbin.mysqld chiamato usr.sbin.mysqld.bak e l'ho tenuto nella stessa directory /etc/apparmor.d/.

Dopo ulteriori ricerche ho trovato questo post sul blog: https://blogs.oracle.com/jsmyth/apparmor-and-mysql

Ho installato apparmor-utils e ho provato a lamentarmi su / usr / sbin / mysqld e ha detto che ho definito 2 configurazioni di apparmor (entrambi i miei file).

So che potrebbe non essere il problema che stai affrontando, ma solo per motivi di chiarezza, non essere stupido come me, facendo un file di backup nella stessa directory della directory di apparmor sbin.


0

Controlla anche se la tua partizione non è piena, come nel mio caso.

Per un motivo sconosciuto, neanche lo spostamento dei dati in un'altra partizione ha funzionato.

Quindi per una soluzione rapida, invece di scherzare con llvm o gparted, ho ridotto le mie /swapfiledimensioni.

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.