MySQL non si avvia!


12

Ricevo questo errore quando provo ad accedere a MySQL dalla riga di comando:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Penso che questo significhi che MySQL non è ancora stato avviato. Quindi provo ad avviarlo:

sudo /etc/init.d/mysql start

e ricevo questo messaggio:

* Starting MySQL database server mysqld [fail] 

Dove guardo / cosa devo fare per avviare MySQL? Sto eseguendo Ubuntu 8.04 e ho installato MySQL tramite apt-get. Sono stato in grado di avviarlo e usarlo un paio di volte, quindi non so perché abbia smesso di funzionare.

Aggiornamento: quando eseguo sudo /etc/init.d/mysql status ricevo il messaggio:

* MySQL is stopped.

Aggiornamento n. 2: I miei file di registro (/var/log/mysql.log e /var/log/mysql.err) sono vuoti (se questi sono quelli giusti)


cosa succede quando si sudo /etc/init.d/mysql status
emgee

Risposte:


10

Su Ubuntu 12.04 ho avuto lo stesso problema dopo aver modificato le dimensioni del buffer nel file /etc/mysql/my.cnf, penso di essermi un po 'trascinato. Ad ogni modo, dopo aver provato a riportarli alle impostazioni predefinite, MySQL non si avviava ancora.

Ho provato diversi metodi per risolverlo, ho notato che mancava /var/run/mysql/mysql.sock. Questo potrebbe essere un problema, quindi puoi controllare lì e se manca, puoi sostituirlo nel modo seguente:

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

Questo NON ha risolto il problema per me! Ma potrebbe per alcuni.

Quello che dovevo fare era reinstallare completamente MySQL, per farlo dovrai usare il comando sudo. I passaggi per rimuovere e reinstallare completamente MySQL sono i seguenti:

Rimuovi MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

Opzionalmente puoi usare aptitude, sostituendo apt-get --purge con aptitude

Pulire

sudo apt-get autoremove
sudo apt-get autoclean

Rimuovi dir MySQL

sudo rm -rf /etc/mysql

Installa MySQL

sudo apt-get install mysql-server mysql-client

MySQL ora dovrebbe essere in esecuzione, puoi verificarlo nel modo seguente:

sudo service mysql status

Tu dovresti vedere

mysql start/running, process xxxxx

Spero che questo aiuti, e ho pensato di aggiungere dopo aver fatto tutti i miei database e le mie tabelle ancora disponibili, tuttavia ho dovuto ricreare gli utenti e le password per quei database.

Nota: se hai avuto l'estensione mysql per php, dovrai reinstallare anche questo.

sudo apt-get install php5-mysql

Questo ha funzionato per me, ma ho dovuto cambiarlo in: sudo touch /var/run/mysqld/mysqld.socke l'ho scoperto dalla fine del /var/log/syslog (es. Cambio a mysqld)
Programster

È /var/run/mysqldo /var/run/mysql?
CMCDragonkai

toccare il file di calzino è una cattiva idea: hai creato un file normale, quando in realtà è un socket, che è un tipo speciale di file.
Criggie,

3

ATTENZIONE: questo è pericoloso, il tuo mysql NON sarà sicuro e chiunque sarà in grado di connettersi, modificare, ecc. Le tue tabelle, non lasciare il server in esecuzione con questo comando.

Prova ad avviarlo in modalità provvisoria: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

Se funziona, potrebbero esserci problemi con i tuoi information_schema o le tue tabelle mysql. Se non funziona, allora qualcosa non va nella tua installazione.


1
Questo è buono, ti dà errori dettagliati in syslog. Il comando è cambiato, su Ubuntu 12.04 lo èsudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000,

3

Controlla i tuoi file di registro come nelle altre risposte. Inoltre, verifica di disporre di spazio (o spazio su disco) sufficiente. MySQL può comportarsi in questo modo su una partizione vuota.

df -h

In caso contrario, consulta i documenti di MySQL sul debug di un server . Il loro myisamchk(se stai usando MyISAM) è particolarmente utile.


3

Recentemente ho anche avuto questo problema dopo l'aggiornamento di Ubuntu. Non sono ancora sicuro di quale sia esattamente il problema. Un motivo che ha funzionato per il momento per far funzionare mysql è stato quello di fare:

sudo aa-complain /etc/apparmor.d/*mysql*

Questo lo fa funzionare, indicando che apparmor ha interrotto l'esecuzione di mysql e spiegando perché probabilmente anche i registri sono vuoti: mysql non è stato autorizzato a funzionare.

Rimane un problema strano, dato che finora non ci sono "lamentele" da questo /var/log/apparmore l'unica voce di controllo in kern.log è dal cambiare il profilo alla modalità di reclamo.

Si noti che nel fare ciò ho anche aggiunto un /etc/apparmor.d/local/usr.sbin.mysqlfile (vuoto) poiché il comando aa-denunce si è lamentato di non aver trovato questo file.


Grazie mille! Dopo essermi avvicinato a strapparmi i capelli, alla fine l'ho risolto.
Olathe,

3

Ho avuto lo stesso problema con la mia gocciolina Digital Ocean da 512 MB.

Si è scoperto che è a causa di memoria insufficiente.

Una soluzione immediata è riavviare altri servizi per liberare memoria, ad es.

sudo service apache2 restart

Quindi, si spera, con memoria sufficiente, si dovrebbe essere in grado di riavviare mysql

sudo service mysql restart

La soluzione a lungo termine è ottenere più RAM o creare memoria di swap .


2

Dai un'occhiata ai tuoi file di registro. Almeno su Debian, ottieni mysql * accedi /var/log.


3
mysql.err e mysql.log sono entrambi vuoti
Andrew,

1

Ha avuto lo stesso problema, risulta che la soluzione mi stava fissando in faccia. L'unità era piena. Non si ottengono registri perché non è possibile scriverli .....


0

Lo stesso problema mi ha afflitto per anni su un Ubuntu 12.04 Digital Ocean VPS con mysql 5.6 installato da un PPA. I sintomi erano che il file mysql.sock /var/run/mysqld/mysql.socksarebbe stato rimosso ma mai ricreato, quindi dovevo eseguire manualmente i seguenti comandi ogni volta che mysql veniva aggiornato o riavviato il server:

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

Questo è stato dalla risposta di Kyle C (tranne che con mysqld anziché mysql). Alla fine ho eseguito il downgrade a mysql 5.5 che viene quando normalmente eseguiresti un sudo apt-get install mysql-servercomando. Tuttavia non è stato semplice, quindi ecco cosa dovevo fare:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

Spero che questo aiuti qualcun altro ad avere lo stesso dolore.


0

immagino che questo potrebbe aiutare gli altri ... quindi eccolo qui.

Volevo migrare il mio mysql 5.5 (predefinito di Ubuntu) nel nuovo 5.7
(volevo giocare in giro con il nuovo tipo JSON nativo)

Ho seguito le istruzioni per installare l'ultima versione ....
ma MySQL non voleva avviarsi.

Ho trascorso parecchio tempo a cercare e poi ho trovato questa riga nel /var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

e questo è qualcosa che è impostato in /etc/mysql/my.cnfquesto, durante l'aggiornamento, ho scelto di mantenere.

Quindi, abbastanza facile dopo:
sostituito il mio my.cnfcon la my.cnf.dpkg-distversione che si trova nella stessa directory ...

Quindi ha dovuto correre

sudo mysql_upgrade -u root -p sudo service mysql restart

e ora MySQL è di nuovo funzionante


0

Ho trovato un'altra variante di ciò che può essere sbagliato. Ho spostato la directory dei dati e ho scoperto di aver dimenticato di chown la directory per l'utente mysql, che fallisce anche senza output. Ovviamente sbagliato col senno di poi, ma la mancanza di un messaggio di errore rende difficile trovare ogni banale problema.

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.