"Impossibile generare mysql processo principale: impossibile eseguire: nessun file o directory"

55

Sono un principiante su MySQL così da sopportare.

Ho appena completato l'aggiornamento da 11.10 a 12.04.

Tutto sembrava funzionare senza intoppi e tutto il mio software e le impostazioni funzionano correttamente. Oltre a MySQL.

Quando provo:

sudo start mysql

Ho ricevuto un errore:

start: Job failed to start

Dove posso diagnosticare quale sia il problema? E (si spera) - come risolverlo?

(Ho disabilitato l'avvio automatico seguendo i consigli qui se questo è di una certa importanza)

Aggiornamento 1:

Entrambe le uscite di:

cat /var/log/mysql.err 
cat /var/log/mysql.log

sono vuoti.

Output di dmesg | grep mysql :

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

Aggiornamento 2:

Come indicato da AWinter in basso - sembrava che MySQL scomparisse automaticamente dopo l'aggiornamento e dovette essere reinstallato.

    
posta radek 27.04.2012 - 01:06

14 risposte

48

Controllare che il pacchetto mysql-server-5.1 sia stato disinstallato, sembra che potrebbe persistere dopo l'aggiornamento. Ho avuto lo stesso errore e ho dovuto eliminare i server MySQL 5.1 e 5.5, quindi reinstallarli.

Prima di tutto fai un backup della tua directory / var / lib / mysql / per sicurezza.

sudo cp -R /var/lib/mysql/ ~/mysql

Next purge MySQL (questo rimuoverà php5-mysql e phpmyadmin così come un certo numero di altre librerie quindi preparatevi a reinstallare alcuni elementi dopo questo.

sudo apt-get purge mysql-server-5.1 mysql-common

Rimuovi la cartella / etc / mysql / e il suo contenuto

sudo rm /etc/mysql/ -R

Quindi verifica che i tuoi vecchi file di database siano ancora in / var / lib / mysql / se non lo sono, quindi copiali di nuovo nella cartella, quindi chown root: root

(eseguili solo se i file non ci sono più)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

Quindi installa il server mysql

sudo apt-get install mysql-server

Infine, reinstalla tutti i pacchetti mancanti come phpmyadmin e php5-mysql.

    
risposta data AWinter 27.04.2012 - 05:47
15
sudo dpkg-reconfigure mysql-server-5.5
    
risposta data Kevin C. Smith 05.05.2012 - 18:10
12

Ho avuto questo stesso problema e per me erano i file di log InnoDB erano di dimensioni diverse rispetto a quanto mysql si aspettava e non funzionava in modo silenzioso durante l'aggiornamento.

Ho avuto un file di configurazione personalizzato che è stato cancellato nell'aggiornamento alla 12.04 che ha impostato le dimensioni del file di registro su qualcosa di diverso rispetto alla configurazione predefinita.

Devi rimuovere i file: / var / lib / mysql / ib_logfile *

Dopo che i file sono spariti, mysql può ora avviare e creare nuovi file di registro con le dimensioni predefinite.

    
risposta data Corey Aufang 27.04.2012 - 22:58
9

La maggior parte degli errori verrà visualizzata avviando il server in modalità non-demone dettagliata e guardando l'output:

sudo mysqld --verbose
    
risposta data Ian Mackinnon 13.10.2012 - 23:42
6

Ho avuto lo stesso problema, ma nessuna delle risposte di cui sopra mi ha aiutato. Quindi, come speranza finale, ho provato a liberare spazio su disco. Semplicemente rimuovo i file di log non necessari da / var / log che hanno liberato spazio di 2.5G. Quindi MySQL ha iniziato normalmente.

    
risposta data Eye 03.08.2012 - 04:27
5

Questo a volte succede e anche se ci sono un paio di problemi diversi che potrebbero rendere mysql non inattivo scriverò qui alcuni dei più comuni che conosco:

NOTA - Perché spiegando i problemi più comuni, suppongo che tu abbia già provato a rimuovere e installare, o semplicemente a reinstallare il servizio mysql in questo modo:

Per installare - sudo apt-get install mysql-server mysql-client
Rimuovere - sudo apt-get remove mysql-server mysql-client
Per eliminare (Rimuovi file + Config) - sudo apt-get purge mysql-server mysql-client
Per reinstallare - sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnf file non si trova nella directory predefinita. Dovrebbe essere (per impostazione predefinita) essere posizionato in /etc/my.cnf o /etc/mysql/my.cnf .

  2. Spazio insufficiente nel disco rigido in cui si trovano i file di dati mysql. Se i database diventano troppo grandi e prendono il 100% del disco rigido, il servizio non funzionerà.

  3. Dopo l'aggiornamento, controlla che il file my.cnf sia nella posizione corretta. A seconda di come è stato aggiornato o da quale versione è stato aggiornato, potrebbe essere in /etc/my.cnf o /etc/mysql/my.cnf come menzionato prima. Ricorda inoltre che il file può anche essere chiamato mysql.conf e non solo my.cnf . Questo accade nei casi in cui hai scaricato il file binario da mysql.com .

  4. Eseguendo un dmesg per vedere cosa sta gettando il servizio mysql come un messaggio di errore aiuta poiché dà l'errore di caricamento. Potrebbe anche dire perché questo sta accadendo. Se digiti dmesg da solo nel terminale, ti mostrerà il mondo. Quello che vogliamo è l'informazione su mysql quindi fai qualcosa di simile a questo: dmesg | grep mysql questo ti lancerà qualsiasi riga che contiene mysql in loro.

  5. Verifica che il file my.cnf o mysql.conf sia corretto. In 12.04 MySQL è la versione 5.5, in 11.10 è la versione 5.1. Potrebbe avere alcune modifiche nel file conf (non l'ho verificato effettivamente) e potrebbe sembrare sciocco, ma sicuramente può darti dei problemi.

  6. Gli errori relativi ai problemi di socket normalmente sono l'errore del file my.cnf o mysql.conf che punta al posto sbagliato, l'errore normalmente si presenta come:

      

    Impossibile connettersi al server MySQL locale tramite socket '/var/run/mysqld/mysqld.sock'

    L'altra fonte di questo problema è correlata al file mysql in /etc/init.d che sta puntando alla cartella sbagliata perché potrebbe utilizzare uno script più vecchio di quello necessario per l'attuale mysql sul sistema (It potrebbe non essere aggiornato correttamente, non sovrascrivere il file di configurazione, ecc.). Quindi modifica solo uno di questi due file e vedi se stanno puntando da qualche altra parte e poi fai semplicemente un sudo service mysql restart per verificare se funziona.

  7. Per avere una visione migliore degli output specifici di errore di mysql fai come segue:

    cat /var/log/mysql.err - Vi mostrerà gli errori mysql. Lo farei come cat /var/log/mysql.err | less se ti capita di vedere troppe informazioni perché less ti aiuterà a scorrere l'output di cat .

    Lo stesso vale per cat /var/log/mysql.log Se vedi l'errore lì, forse inserendolo nella domanda o come commento, ti sarà più facile rispondere.

  8. Se si verificano problemi di connessione e il servizio è effettivamente in esecuzione, provare a verificare se il firewall del server consente le connessioni tramite la porta 3306 (connessioni in entrata). Successivamente verifica se il router (se presente) non ha bloccato la porta 3306. Fondamentalmente fai un test di rete per vedere da dove ha origine il problema relativo alla porta assegnata a mysql.

Se tutto va bene, per verificare se il servizio mysql è in esecuzione digita service mysql status

Come ultima risorsa. Se ti capita di eseguire mysql ma non riesci ad accedere, prova quanto segue:

  1. Arresta il server MySQL:

    sudo /etc/init.d/mysql stop o sudo service mysql stop

  2. Avvia il servizio mysqld manualmente con la configurazione manuale

    sudo mysqld --skip-grant-tables &

    (Ricorda di aggiungere il & amp; altrimenti dovrai aprire un altro terminale. & amp; invia il processo allo sfondo e puoi uccidere usando lo stesso terminale).

  3. Accedi al database mysql come ROOT

    mysql -u root mysql

  4. Digita quanto segue che sostituisce MyPASSWORD con la tua nuova password

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

Questo dovrebbe essere sufficiente per accedere nuovamente al servizio Mysql come root. Spero che ti aiuti.

    
risposta data Luis Alvarado 27.04.2012 - 01:17
4

Ho avuto lo stesso problema dopo l'aggiornamento a Ubuntu Server 12.04 LTS, in esecuzione

sudo apt-get install mysql-server 

è stato sufficiente per risolverlo, sebbene si sia lamentato di un vecchio database di spotweb. Ho risolto ciò rimuovendo spotweb:

sudo apt-get purge spotweb

e riconfigurazione di mysql:

sudo dpkg-reconfigure mysql-server-5.5
    
risposta data RedPixel 20.05.2012 - 15:17
4

Aggiungerò questo perché qualcuno affronta problemi simili. Ho provato a disinstallare e reinstallare senza alcun risultato. La chiave per trovare la soluzione è che Upstart colloca i log degli errori in questa cartella

/ var / log / parvenu /

per mysql

/var/log/upstart/mysql.log

quando l'ho aperto aveva questo messaggio

  

Errore del parser di AppArmor per /etc/apparmor.d/usr.sbin.mysqld in   /etc/apparmor.d/tunables/global alla riga 15: impossibile aprire   'Tunables / home'

Quando ho cercato nella cartella /etc/apparmor.d/tunables / Mi mancava il file di casa, quindi ne ho creato uno

gedit /etc/apparmor.d/tunables/home e copiato il contenuto da un altro computer che aveva queste righe non commentate

  

@ {HOME} = @ {HOMEDIRS} / * / / root /

     

@ {directory home} = / home /

qualcuno deve affrontare un problema simile qui

link

poi dopo sono stato in grado di riavviare il servizio

    
risposta data pt123 22.08.2014 - 13:54
2

Nel mio caso è stato molto più facile di alcune risposte qui. Ho trovato il bug correlato su launchpad e la correzione è stata menzionata nel commento 9:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart
    
risposta data Manfred Moser 05.06.2012 - 06:38
1

Dopo l'aggiornamento ho scoperto che mysql-server / mysql-server-5.5 non era installato e né 5.1. Ho rinominato my.cnf in my.cnf_old e ho provato ad installare mysql-serven. Durante l'installazione c'era un messaggio di errore che la password di root non poteva essere impostata. Dopo questo controllo ho controllato le mie configurazioni, apparmor e così via. Tutto sembrava essere ok. Il mio prossimo tentativo è stato quello di riconfigurare mysql-server, ma si è lamentato del fatto che il pacchetto non è stato installato completamente. Così ho deciso di disinstallare e durante questo apt-get risolto il pacchetto e ora funziona. Non so perché perché non ho cambiato nulla.

    
risposta data user54914 27.04.2012 - 12:38
1

Ho avuto problemi simili, ma sono stati rintracciati rapidamente in Apparmor, che mi ero già ricordato di avermi dato in precedenza.

Se apporti modifiche a queste impostazioni e il tuo sistema utilizza l'apparmor, puoi farlo anche necessario regolare /etc/apparmor.d/usr.sbin.mysqld. Per esempio. queste linee sono state aggiunte (per consentire un collegamento simbolico al my.cnf e per consentire al file symlinked di essere letto, presumibilmente):

/ usr / sbin / mysqld {     ...   /etc/mysql/*.cnf lr,   /path/to/symlinked/my.cnf r,     ...  }

    
risposta data Simon Nuttall 29.04.2012 - 13:50
1

Nel mio caso ho provato ad installare MySQL su una nuova installazione di Ubuntu 12.04, ma non ho capito perché mi ha dato un errore nell'impostare la password per l'utente 'root'. Ho provato tutte le soluzioni sopra, ma niente da fare.

Poi ho deciso di eliminare / rimuovere tutto, ho disinstallato il server MySQL e rimosso tutte le sue cartelle (/ etc / mysql / e / var / lib / mysql /), alla fine grazie a una sorta di casualità che non ha dato errore durante la reinstallazione e sono stato in grado di impostare la password e avviare l'istanza del server.

    
risposta data Alexian 10.07.2012 - 10:22
0

Nel terminale puoi installarlo di nuovo, e farlo eseguire my.cnf puoi digitare:

sudo apt-get install mysql-server-5.1
sudo apt-get --reconfigure mysql-server-5.1
sudo apt-get update
sudo start mysql my.cnf

potrebbe funzionare in questo modo.

    
risposta data Michael 06.05.2014 - 20:46
0

Ho problemi nel aggiungere questo performance_schema in [mysqld] in /etc/mysql/my.conf . Rimosso quella riga e mysql è stato in grado di ricominciare.

Modifica: Risulta che un concerto di ram non è sufficiente per avviare mysqld con performance_schema abilitato. Ho partecipato a 3 concerti e ha funzionato bene.

    
risposta data ThorSummoner 09.10.2015 - 00:39

Leggi altre domande sui tag