"Impossibile generare il processo principale di mysql: impossibile eseguire: nessun file o directory di questo tipo"


56

Sono un principiante su MySQL, quindi abbiate pazienza.

Ho appena finito di aggiornare dall'11.10 al 12.04.

Tutto sembrava funzionare senza alcun inconveniente e tutto il mio software e le mie impostazioni funzionano bene. Oltre a MySQL.

Quando provo:

sudo start mysql

Ricevo un errore:

start: Job failed to start

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

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


Aggiornamento 1:

Entrambe le uscite di:

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

sono vuoti.

Uscita 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 di seguito, sembrava che MySQL scomparisse automaticamente dopo l'aggiornamento e che fosse necessario reinstallarlo.

Risposte:


48

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

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

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

Successivamente elimina MySQL (questo rimuoverà php5-mysql e phpmyadmin così come un numero di altre librerie, quindi preparati a reinstallare alcuni elementi dopo questo.

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

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

sudo rm /etc/mysql/ -R

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

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

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

Quindi installare il server mysql

sudo apt-get install mysql-server

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


1
Eccellente. Ha funzionato come un fascino. Tutti di nuovo funzionanti. Una nota: non ho dovuto rimuovere questa directory sudo rm /etc/mysql/ -R- semplicemente non era presente nel mio caso. Comunque - per fortuna era solo un'installazione locale per testare Wordpress .. Mi chiedo cosa sarebbe successo su un vero server o_O
radek,

apt-get --reinstall install mysql-server-xx ha fatto il lavoro per me.
Yashima,

Questo ha funzionato per me, ma probabilmente avrei dovuto farlo apt-get updateprima, perché ha rimosso dovecot e php5-mysql. Ho potuto reinstallarli solo dopo l'aggiornamento. Una volta fatto, tutto funzionava di nuovo bene.
AntonChanning,

Ottengo -bash: cd: /var/lib/mysql/: Permission deniede l'utilizzo sudo -inon funziona nemmeno.
Charlotte,

@LittleBigBot Ho apportato una modifica che dovrebbe risolverlo.
Inverno


12

Ho avuto lo stesso problema e per me era che i file di log di InnoDB avevano dimensioni diverse da quelle che MySQL si aspettava e non sono riusciti silenziosamente durante l'aggiornamento.

Ho avuto un file di configurazione personalizzato che è stato cancellato durante l'aggiornamento a 12.04 che ha impostato le dimensioni del file di registro su un valore diverso da quello della configurazione predefinita.

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

Dopo che i file sono spariti, mysql ora può iniziare e creare nuovi file di registro delle dimensioni predefinite.


Bingo. Nel nostro caso uno sviluppatore aveva modificato alcune impostazioni di configurazione per innodb (e né lui né io sapevamo che ciò potesse causare un problema). Ciò ha impedito l'avvio di mysql. L'eliminazione di questi file di configurazione ha consentito l'avvio di MySQL.
gaoshan88

Bingo: modificata l'impostazione di configurazione per innodb_log_file_size.
tweak2,

9

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

sudo mysqld --verbose

7

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


Sì, anche questo era il mio problema. mysql non si avviava durante l'avvio, come era stato. Più tardi furono le informazioni di sistema che eseguivano il rendering al terminale; "Utilizzo di /: 95,1%" Quindi, non c'era abbastanza spazio libero per l'avvio di mysql (e altri processi). Avevo bisogno di fare un po 'di pulizia dei file e mysql è iniziato senza problemi.
Screenack

Questo è stato il mio caso. Pulizia disco e Mysql iniziano a funzionare.
Sergey Romanov,

5

Questo a volte succede e sebbene ci siano un paio di problemi diversi che potrebbero non far iniziare mysql, scriverò qui alcuni dei più comuni che conosco:

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

Per installare - sudo apt-get install mysql-server mysql-client
Per 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.cnfil file non si trova nella directory predefinita. Dovrebbe essere (per impostazione predefinita) trovarsi in uno /etc/my.cnfo /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 occupano il 100% del disco rigido, il servizio fallirà.

  3. Dopo l'aggiornamento, verificare che il my.cnffile sia nella posizione corretta. A seconda di come è stato aggiornato o da quale versione è stato aggiornato, potrebbe trovarsi nella /etc/my.cnfo /etc/mysql/my.cnfcome menzionato prima. Ricorda inoltre che il file può anche essere nominato mysql.confe non solo my.cnf. Ciò accade nei casi in cui è stato scaricato il file binario da mysql.com .

  4. Fare un dmesgper vedere cosa sta lanciando il servizio mysql poiché un messaggio di errore aiuta poiché fornisce l'errore di caricamento. Potrebbe anche dire perché questo sta accadendo. Se digiti dmesgda solo nel terminale ti mostrerà il mondo. Quello che vogliamo sono le informazioni su mysql, quindi fai qualcosa del genere: dmesg | grep mysqlquesto ti farà cadere tutte le righe che contengono mysql in esse.

  5. Verificare che il file my.cnfo mysql.confsia corretto. In 12.04 MySQL è la versione 5.5, in 11.10 è la versione 5.1. Potrebbe avere alcune modifiche nel file conf (in realtà non lo ha verificato) e potrebbe sembrare sciocco ma sicuramente può darti qualche problema.

  6. Gli errori relativi ai problemi dei socket normalmente sono colpa del file my.cnfo mysql.confche punta in una posizione errata, normalmente mostreranno come:

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

    L'altra fonte di questo problema è legata al mysqlfile in /etc/init.dquanto punta alla cartella sbagliata perché potrebbe utilizzare uno script più vecchio di quello necessario per il vero mysql sul sistema (potrebbe non essere aggiornato correttamente, non sovrascrivere il file di configurazione, ecc.). Quindi basta modificare uno qualsiasi di questi due file e vedere se stanno puntando da qualche altra parte e quindi semplicemente fare un sudo service mysql restartper verificare se funziona.

  7. Per esaminare meglio gli output specifici di errore di mysql, procedi come segue:

    cat /var/log/mysql.err- Ti mostrerà gli errori mysql. Lo farei così cat /var/log/mysql.err | lessse ti capita di vedere troppe informazioni volare poiché lessti aiuterà a farti strada attraverso l'output di cat.

    Lo stesso vale per cat /var/log/mysql.logSe viene visualizzato l'errore, è possibile che sia stato inserito nella domanda o come commento aiuterà a rispondere più rapidamente.

  8. Se si riscontrano problemi di connessione e il servizio è effettivamente in esecuzione, provare a vedere se il Firewall del server consente le connessioni attraverso la porta 3306 (connessioni in entrata). Successivamente controlla se il router (se applicabile) non ha bloccato la porta 3306. Fondamentalmente fai un test di rete per vedere da dove proviene il problema relativo alla porta assegnata a mysql.

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

Come ultima opzione. 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. Avviare il mysqldservizio manualmente con la configurazione manuale

    sudo mysqld --skip-grant-tables &

    (Ricorda di aggiungere & else dovrai aprire un altro terminale. Il & invia il processo in background e puoi terminare usando lo stesso terminale).

  3. Accedi al database mysql come ROOT

    mysql -u root mysql

  4. Digita quanto segue sostituendo 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 sia d'aiuto.


Grazie per un rapido feedback. Il file my.cnf è /etc/mysql/my.cnfnel mio caso. È quella posizione corretta? dmesgmi dà un sacco di output che va oltre la mia comprensione: / Avevo davvero installato 5.1 - ha delle conseguenze?
radek,

1
Non preoccuparti della posizione se trovi il file. Consentitemi di aggiornare la risposta per fornire una visione migliore dell'output mysql in dmesg.
Luis Alvarado,

4

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

sudo apt-get install mysql-server 

era sufficiente per risolverlo, anche se si lamentava di un vecchio database di spotweb. L'ho risolto rimuovendo spotweb:

sudo apt-get purge spotweb

e riconfigurare mysql:

sudo dpkg-reconfigure mysql-server-5.5

4

Aggiungerò questo nel caso in cui qualcuno affronti problemi simili. Ho provato tutte le operazioni di disinstallazione e reinstallazione senza alcun risultato. La chiave per trovare la soluzione è che upstart inserisce i suoi 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 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 home in quello, 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 affronta un problema simile qui

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

poi dopo sono stato in grado di riavviare il servizio


2

Nel mio caso è stato molto più semplice di alcune risposte qui. Ho trovato il bug relativo su launchpad e la correzione era come menzionato lì nel commento 9:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart

1

Dopo l'aggiornamento ho scoperto che mysql-server / mysql-server-5.5 non era installato e nemmeno 5.1. Ho rinominato my.cnf in my.cnf_old e ho provato a installare mysql-serven. Durante l'installazione è stato visualizzato un messaggio di errore che non è stato possibile impostare la password di root. Dopo questo ho controllato le mie configurazioni, apparmor e così via. Sembrava tutto ok. Il mio tentativo successivo fu di riconfigurare mysql-server ma si lamentò che il pacchetto non era stato installato completamente. Così ho deciso di disinstallare e durante questo apt-get è stato corretto il pacchetto e ora funziona. Non so perché perché non ho cambiato nulla.


1

Ho avuto problemi simili, ma sono stato rapidamente rintracciato in apparmor, che ho ricordato di avermi segnalato in precedenza.

Se si apportano modifiche a queste impostazioni e il sistema utilizza apparmor, potrebbe anche essere necessario regolare /etc/apparmor.d/usr.sbin.mysqld. Per esempio. sono state aggiunte queste righe (per consentire un collegamento simbolico a my.cnf e per consentire la lettura del file con collegamento simbolico, presumibilmente):

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


1

Nel mio caso ho provato a installare MySQL su una nuova installazione di Ubuntu 12.04, ma non ho capito perché mi ha dato un errore durante l'impostazione della 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 alcun errore durante reinstallazione e sono stato in grado di impostare la password e avviare l'istanza del server.


0

Nel terminale è possibile installarlo di nuovo e farlo funzionare my.cnf è possibile 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.


0

Sto riscontrando problemi nel fatto che l'aggiunta di performance_schemaunder [mysqld]in /etc/mysql/my.confcausa questo errore. Rimossa quella linea e mysql è stato in grado di ricominciare.

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

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.