errore: 'Impossibile connettersi al server MySQL locale tramite socket' /var/run/mysqld/mysqld.sock '(2)' - Missing /var/run/mysqld/mysqld.sock


322

Il mio problema è iniziato con il fatto che non ero più in grado di accedere come root sulla mia installazione mysql. Stavo tentando di eseguire mysql senza password attivate ... ma ogni volta che eseguivo il comando

# mysqld_safe --skip-grant-tables &

Non risponderei mai al prompt. Stavo cercando di seguire queste istruzioni per recuperare la password .

Lo schermo si presenta così:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

e non viene richiesto di iniziare a digitare i comandi SQL per reimpostare la password.

Quando lo uccido premendo CTRL+ C, ricevo il seguente messaggio:

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

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Se ritento il comando e lo lascio abbastanza a lungo, ricevo la seguente serie di messaggi:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

Ma poi se provo ad accedere come root facendo:

# mysql -u root

Ricevo il seguente messaggio di errore:

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

Ho controllato e il /var/run/mysqld/mysqld.sockfile non esiste. La cartella lo fa, ma non il file.

Inoltre, non so se questo aiuta o no, ma ho corso find / -name mysqlde mi è venuto in mente:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Sono nuovo di Linux e MySQL, quindi non so se sia normale o meno. Ma sto includendo queste informazioni per ogni evenienza.

Alla fine ho deciso di disinstallare e reinstallare mysql.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

Dopo aver reinstallato nuovamente tutti i pacchetti nello stesso ordine di cui sopra, durante l'installazione di phpmyadmin, ho ricevuto lo stesso errore:

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

Quindi ho provato di nuovo a disinstallare / reinstallare. Questa volta, dopo aver disinstallato i pacchetti, ho anche rinominato manualmente tutti i file e le directory mysql mysql.badnelle rispettive posizioni.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Quindi ho provato a reinstallare mysql-servere di mysql-clientnuovo. Ma ho notato che non mi richiede una password. Non dovrebbe chiedere una password amministratore?


Ho avuto lo stesso problema. L'ho risolto proprio ora. stackoverflow.com/questions/18150858/…
robert


risolto semplicemente riavviando il server, quindi riavviare il servizio mysql
bowpunya

@Anto Questo non è un duplicato. Questo è /var/run/mysqld/mysqld.sockmancante. Il problema che hai collegato ha quel file.
motorbaby,

Nessuna delle risposte qui o altrove che ho trovato ha risolto il mio problema. Dato che era un nuovo progetto sono passato a PostgreSQL e funziona semplicemente! :-)
James Bradbury,

Risposte:


195

Per trovare tutti i file socket sul tuo sistema in esecuzione:

sudo find / -type s

Il mio sistema server Mysql aveva il socket aperto su /var/lib/mysql/mysql.sock

Una volta trovato dove viene aperto il socket, aggiungi o modifica la linea nel tuo file /etc/my.cnf con il percorso del file socket:

socket=/var/lib/mysql/mysql.sock

A volte lo script di avvio del sistema che ha avviato l'eseguibile della riga di comando specifica un flag --socket=path. Questo flag potrebbe sovrascrivere la posizione di my.cnf e ciò comporterebbe la non individuazione di un socket in cui il file my.cnf indica che dovrebbe essere. Quindi, quando si tenta di eseguire il client della riga di comando mysql, leggerà my.cnf per trovare il socket, ma non lo troverà poiché si discosta da dove è stato creato dal server. Quindi, a meno che non ti interessi dove risiede il socket, basta cambiare il my.cnf in modo che funzioni.

Quindi, interrompere il processo mysqld. Il modo in cui lo fai varierà in base al sistema.

Se sei un superutente nel sistema linux, prova una delle seguenti soluzioni se non conosci il metodo specifico utilizzato dalla tua configurazione di Mysql:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Alcuni sistemi non sono configurati per avere un modo elegante per arrestare mysql (o per qualche ragione mysql non risponde) e puoi forzare la terminazione di mysql con:
    • Un passo: pkill -9 mysqld
    • Due passaggi (meno preferito):
      • Trova l'id di processo di mysql con pgrep mysqlops aux | grep mysql | grep -v grep
      • Supponendo che l'id di processo sia 4969terminato conkill -9 4969

Dopo averlo fatto, potresti voler cercare un file pid in /var/run/mysqld/ ed eliminarlo

Assicurati che le autorizzazioni sul tuo socket siano tali che qualsiasi utente mysqld sia in esecuzione come può leggere / scrivere su di esso. Un semplice test è quello di aprirlo per leggere / scrivere per intero e vedere se funziona ancora:

chmod 777 /var/run/mysqld/mysqld.sock

Se ciò risolve il problema, è possibile personalizzare le autorizzazioni e la proprietà del socket in base alle proprie esigenze in base alle impostazioni di sicurezza.

Inoltre, la directory in cui risiede il socket deve essere raggiungibile dall'utente che esegue il processo mysqld.


15
Si prega di non raccomandare l'uso kill -9; ci sono diversi modi che dovrebbero essere provati prima di arrivare a questo.
Ignacio Vazquez-Abrams,

@dot esegui questo nella radice del file 'trova. -name mysqld.sock ". Ho visto il file socket in luoghi diversi da / var / run. Una volta trovato, potrebbe essere necessario modificare il file my.cnf per indicare dove si trova.
Ray,

@ray, ho provato a eseguire il comando originale in un modo diverso (ho trovato un post specifico su Ubuntu su un altro sito ..). Ecco i comandi che ho eseguito: "sudo service mysql stop" e "sudo mysqld --skip-grant-tables". Dopo aver eseguito il secondo comando, viene visualizzato il seguente errore: "InnoDB: impossibile bloccare ./ibdata1, errore: 11". Non riesco a trovare questo file ./ibdata1 ... InnoDB: Verifica di non avere già un altro processo mysqld
punto

2
@dot run ps -aux | grep mysqlde vedi se sono in esecuzione altri processi mysql
Ray

@ray. mi sto strappando i capelli dall'uomo. ho deciso di spazzare via mysql e riprovare ... nota il mio post aggiornato.
punto

251

Prova questo comando,

sudo service mysql start

+1 my.cnf puntava alle directory giuste, da mysql service era morto
wruckie,

Ho provato la risposta accettata ma non sono riuscito a trovare mysql.sock, questo ha funzionato per me. Grazie
Giovanne Afonso,

1
Ho dovuto usaresudo service mysqld start
Gavin Miller il

10
sudo apt-get install mysql-serverse non l'hai già installato :)
aimme

17
Se risolvi questo problema, esegui innanzitutto questo semplice comando PRIMA di testare le altre cose, ci vuole solo un secondo e se il server semplicemente non è in esecuzione e va bene dopo averlo avviato, significa semplicemente che non ha avvia automaticamente, che sarebbe quindi il vero problema da risolvere.
Lizardx

137

Questo errore si verifica a causa di più installazioni di mysql. Esegui il comando:

ps -A|grep mysql

Uccidi il processo usando:

sudo pkill mysql

e quindi esegui il comando:

ps -A|grep mysqld

Uccidi anche questo processo eseguendo:

sudo pkill mysqld

Ora sei pronto per eseguire i seguenti comandi:

service mysql restart
mysql -u root -p

Avere di nuovo ben funzionato mysql


Ehi gente, stavo correndo su tutto il web cercando di risolvere questo problema. Il mio problema era che stavo cercando di installare la finestra mobile. Volevo che usasse la directory dei dati mysql che era stata precedentemente utilizzata da mysql al di fuori della finestra mobile ... quel comando ps era il migliore!
Michael,

3
Dopo aver funzionato in tutto il Web per quasi 4+ ore, alla fine ha funzionato. Dovrebbe essere la risposta migliore: +1:
Shivam Gaur,

4
Il processo per mysql.service non è riuscito perché il processo di controllo è terminato con un codice di errore. Vedere "systemctl status mysql.service" e "journalctl -xe" per i dettagli.
John Joe,

1
Il processo per mysql.service non è riuscito perché il processo di controllo è terminato con un codice di errore. Vedere "systemctl status mysql.service" e "journalctl -xe" per i dettagli.
Adib Aroui,

Grazie, mi risparmia tempo.
Aleksandur Atanasov,

41

La soluzione è molto più semplice.

  1. Innanzitutto, devi individuare (nel Terminale con "sudo find / -type s") dove mysql.socksi trova il tuo file. Nel mio caso era dentro/opt/lampp/var/mysql/mysql.sock
  2. Accendi Terminale e problema sudo Nautilus
    Avvia Questo avvia il file manager con privilegi di superutente
  3. Da Nautilus vai al tuo mysql.sock si trova il file
  4. Fare clic con il tasto destro sul file e selezionare Crea collegamento
  5. Rinominare il file di collegamento per mysqld.sockfare clic con il pulsante destro del mouse sul file e tagliare è
  6. Vai a /var/rune crea una cartella chiamatamysqld e inseriscila
  7. Ora fai clic destro e incolla il file di collegamento
  8. Ecco! Ora avrai un mysqld.sockfile su /var/run/mysqld/mysqld.sock:)

4
Come individuare il file mysql.sock? Ho provato a trovare / -name 'mysql.sock' ma non restituisce nulla.
Matthew Lock,

2
@MatthewLock Prima di tutto, assicurati che mysql sia in esecuzione (da "ps aux | grep mysql"), altrimenti non apparirebbe mysql.sock. In secondo luogo, usa "sudo find / -type s", che ti dà tutti i socket sul tuo sistema per localizzare mysql.sock
narengi

35
Cosa succede se l'output di sudo find / -type snon ne contiene mysql.sock?
Jeff

1
Funziona. Ma non ho idea del perché questi sviluppatori non abbiano mai fatto questo lavoro negli anni passati?
Yi Jiang,

2
Se è difficile capire dov'è mysql.sock tramite "find / -type s" - prova a usare il comando "mysql_config --socket". Puoi installarlo con sudo apt-get install libmysqlclient-dev
alexche8

26

Ho solo bisogno di avviare il servizio MySQL dopo l'installazione:

Per Ubuntu:

sudo service mysql start;

Per CentOS o RHEL:

sudo service mysqld start;

Controlla prima da questo sudo systemctl status mysql.servicee sudo systemctl start mysql.service. Questo funziona per me
Ciao Yoon

16

C'è un bug su Ubuntu con MySQL 5.6 e 5.7 in cui var/run/mysqld/scomparirebbe ogni volta che il servizio MySQL si fermava o veniva riavviato. Questo impedisce a MySQL di funzionare. Ho trovato questa soluzione alternativa, che non è perfetta, ma almeno lo fa funzionare dopo l'arresto / riavvio:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/

grazie - riparato per me, devo rifare la directory e ripristinare la proprietà ad ogni riavvio del servizio mysql - non sono stato in grado di trovare l'errore segnalato ufficialmente ovunque o avrei pubblicato un link qui :)
djoe

1
Non l'ho provato, ma forse ti aiuterà: Crea un nuovo file /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details e poi, d /var/run/mysqld 0755 mysql mysql - dopo il riavvio, mysql dovrebbe avviarsi normalmente. Questo è da bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 , commento 3. Se hai riscontrato questo problema con MySQL 5.7, commenta Launchpad. Più utenti risolvono il problema, maggiore sarà l'attenzione.
motorbaby

Ha funzionato per me ... ho dovuto usare mysql come username e non mysqld però
Evan Parsons

L'aggiunta della riga al /etc/tmpfiles.d/mysql.confcommento di per motorbaby ha risolto questo problema per me. Su un sistema operativo Centos 7 e utilizzo mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
turrican_34,

Ciò ha risolto il problema per me.
shikata,

14

Va bene basta copiare e incollare questi codici: questo dovrebbe essere fatto nel terminale, all'interno di un server, quando il database mysql non è installato correttamente e quando viene visualizzato questo errore: "Impossibile connettersi al server MySQL locale tramite socket" / var / run / mysqld / mysqld.sock '(2)'.

Ferma MySql

sudo /etc/init.d/mysqld stop

Riavviarlo o avviarlo

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Crea un link come questo e assegnalo al sistema

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

Esegui un'installazione sicura che guida tutto il processo che devi fare per configurare mysql

/usr/bin/mysql_secure_installation

ottengo lo stesso Can't connecterrore quando provo a eseguire sopra il comando.
giocherellando il

Solo qualcosa che ho scoperto, per coloro che eseguono Ubuntu. Se avvii mysqld usando /etc/init.d/mysqld start, incontrerai comunque questo problema. Usa invece il servizio mysql start e andrà bene. Infuriante, ma alla fine l'ho capito.
Adam Short,

11

Ho riscontrato lo stesso errore e ho scoperto che era dovuto all'aggiornamento dei pacchetti, quindi dopo aver riavviato il mio sistema ho risolto l'errore.

Penso che a causa dell'aggiornamento di librerie / pacchetti sql si sia verificato l'errore, quindi prova questo se stai eseguendo un aggiornamento :)


1
L'ho fatto dopo la reinstallazione (o l'aggiornamento) e ora funziona. Niente più messaggi socket. Grazie!
wraithie,

8

Ci sono molte ragioni per questo problema, ma a volte basta riavviare il server mysql per risolvere il problema.

sudo service mysql restart

7

Usando XAMPP su Ubuntu:

  1. Crea una cartella chiamata mysqld nella directory / var / run . Puoi farlo usando il comando sudo mkdir /var/run/mysqld.

  2. Creare un collegamento simbolico al file mysql.sock che viene creato dal server XAMPP all'avvio. È possibile utilizzare il comando sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Nota: il file mysql.sock viene creato all'avvio del server e rimosso quando il server viene arrestato, pertanto a volte il collegamento creato potrebbe sembrare interrotto, ma dovrebbe funzionare fino a quando è stato avviato il server utilizzando uno sudo /opt/lampp/lampp starto l'altro si intende.

  1. Avviare il server se non è già in esecuzione e provare a eseguire nuovamente il programma.

In bocca al lupo! Spero che tu riesca a cavartela questa volta.


@MohsinKhan vai su localhost / phpmyadmin e importa il database da lì
Robert Odoch

6

La risposta del passaggio di caricamento dell'utente ha funzionato per me. A volte è necessario modificare il file in /etc/mysql/my.cnfaggiungi riga al client

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Questo mi dà:mysql: unknown variable 'Host=127.0.0.1'
Splaktar

@Splaktar: c'è un errore di battitura. Hostdeve essere in minuscolo hoste funzionerà. Inoltre, questa soluzione ha funzionato per me.
Mohammad Faisal,

Fantastico - questo funziona per me e il mio ambiente docker - ho dovuto solo regolare l'ip che è nel mio caso il contenitore docker mysql ip 172.17.xx
InforMedic

6

* Errore: "Impossibile connettersi al server MySQL locale tramite socket" /var/run/mysqld/mysqld.sock "(2)"

soluzioni

infine disinstallare e reinstallare mysql. **

  • sudo apt-get remove mysql-server
  • sudo apt-get remove mysql-client
  • sudo apt-get remove mysql-common
  • sudo apt-get remove phpmyadmin

quindi installare nuovamente entro

  • sudo apt-get install mysql-server-5.6

Dopo questa operazione, verranno utilizzati 164 MB di spazio su disco aggiuntivo.

  • Vuoi continuare? [Y / n] Y premere YES per installazioni complete

...... .......

  • Alla fine otterrai queste linee ....

    Configurare libhtml-template-perl (2.95-1) ...

    Impostazione mysql-common-5.6 (5.6.16-1 ~ exp1) ... Elaborazione di trigger per libc-bin (2.19-0ubuntu6) Elaborazione di trigger per ureadahead (0.100.0-16) ...

  • E poi

    root @ ubuntu1404: ~ # mysql -u root -p (per prima ogni password dovresti usare)

  • Inserire la password:

  • Nota: la password inserita deve essere uguale alla password del tempo di installazione di mysql (come .root, system, admin, rahul ecc ...)

    Quindi digitare

  • USE rahul_db (nome del database);

Grazie.**


si prega di migliorare la qualità della risposta
Mo.

Questo ha funzionato per me grazie alle molteplici versioni di mysql installate. anche rimuovere mysql-server-5.6/5.5, mysql-client-5.6/5.5. Grazie!
Luuk Skeur,

ottenuto E: Package 'mysql-server-5.6' has no installation candidate, non esiste in Ubuntu 18.04
juliocesar il

6

Assicurarsi che il percorso del file del socket inaccessibile sia uguale a "/var/run/mysqld/mysqld.sock", altrimenti modificare il percorso come il proprio. Ferma il mysqld

$ sudo /etc/init.d/mysqld stop

Se il processo è ancora in esecuzione;

$ sudo pkill -9 mysqld

Rimuovere la directory mysql dove verrà creato il socket. Per me non ha permesso di rimuovere, quindi ho dovuto rimuovere con forza.

$ sudo mkdir -p /var/run/mysqld

Imposta la proprietà sulla dirctory

$ sudo chown mysql:mysql /var/run/mysqld

Inizia mysql

$ sudo /etc/init.d/mysql start

Prova di connettere mysql

$ sudo mysql -u dbuser -p

Sì, questa è la stessa risposta che ho dato il 14 febbraio 19 alle 11:56 (vedi sotto)
Ingo il

Stai salvando la vita.
Sahib Khan,

5

Penso che il tuo server MySQL non sia stato avviato. Quindi avvia il server usando uno dei seguenti comandi.

#services mysql start

o

#/etc/init.d/mysql start

5

Soluzione temporanea

Forse qualcuno sta affrontando questo problema. Sto usando Mysql Workbench su Ubuntu 14 e ho riscontrato questo errore.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Trova il tuo file socket eseguendo sudo find / -type s , nel mio caso lo era/run/mysqld/mysqld.sock

Quindi, ho appena creato un collegamento a questo file nella tmpdirectory.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

Come puoi vedere, il percorso del file è nella /tmpcartella, quindi verrà rimosso di sicuro. È possibile modificare .sockil percorso del file. Vedi la risposta di @utente3002884.
Bilal,

Lo so, stavo solo completando la tua risposta in modo che altri utenti sappiano prima che la soluzione è solo temporanea, come la cartella
Alex Burdusel

Mi hai salvato la vita :)
Mashpy Rahman,

4

si possono trovare mysqld.sockin /var/run/mysqldse è già stato installato mysql-server dasudo apt-get install mysql-server


4

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

in /etc/my.cnfaggiungi queste righe:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

E riavvia il servizio con: service mysql restart

questo ha funzionato per me


4

Questo è stato già menzionato un paio di volte, ma ha funzionato immediatamente per me:

servizio riavvio mysql


Interessante come questo sia diverso dall'uso del semplice comando "mysql"
luminol

3

Nel mio caso erano in esecuzione due processi mysqld .. hanno ucciso i processi opzionali usando pkill -9 mysqld


Avevo bisogno di aggiungere il 'sudo' uccidere il processo.
noti il

3

Se hai molti database e tabelle sul tuo sistema e se hai innodb_file_per_tableimpostato in my.cnf, il tuo server mysql potrebbe aver esaurito gli oggetti / file aperti (o piuttosto i descrittori per questi oggetti) Imposta un nuovo numero massimo con

open-files-limit = 2048

e riavvia mysql. Questo approccio potrebbe essere d'aiuto quando il socket non viene creato affatto, ma in realtà questo potrebbe non essere il vero problema, c'è un problema di fondo.


2

Ho appena avuto questo problema su Ubuntu 14.10

Giri che mysql-servernon erano più installati (in qualche modo erano stati rimossi) ma non potevo semplicemente installarlo perché c'erano alcuni pacchetti rotti e problemi di dipendenza / conflitti.

Alla fine ho dovuto reinstallare mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server


2

La mia soluzione;

Ubuntu 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

Ho cambiato la porta. Ha funzionato per me. Puoi scrivere un'altra porta. Esempio 3355


2

Perché ottenere questo errore

Ho ricevuto nuovi aggiornamenti delle librerie mysql, quindi ho aggiornato il mio sistema operativo Kubuntu dopo aver ricevuto questi errori.


Comandi che ho provato e come l'ho risolto.

MySql-server funziona correttamente ma quando ho provato a connetterne il dare

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

Ho controllato /var/run/mysqld/mysqld.sock'. questa directory. I miei file non esistevano.

Ho anche provato questi comandi a connettersi ma non ha funzionato per me.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

Dopo aver perso circa 2 ore ho trovato la soluzione

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

Dopo ciò tutto risolto per me.


Questo mi ha aiutato a risolvere il problema. Non capisco come sia correlato al problema del calzino che ho avuto ...
Čamo,

1

Cambiare il hostin ha 127.0.0.1funzionato per me.

Modifica il file /etc/mysql/my.cnfe aggiungi la riga sotto indicata alla sezione:client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Dopo aver finito con esso. Eseguire il comando seguente.

sudo service mysql start

Questo mio amico mi ha aiutato :)
Bhargav Nanekalva,

@NBhargav sono così felice che tu possa risolvere il tuo problema .. Ciao amico .. 😇😇
Dulith De Costa

1

Verificherei anche la configurazione mysql. Stavo riscontrando questo problema con il mio server ma ero un po 'troppo frettoloso e ho configurato erroneamente la dimensione innodb_buffer_pool_size per la mia macchina.

innodb_buffer_pool_size = 4096M

Di solito funziona fino al 2048, ma credo di non avere la memoria necessaria per supportare 4 concerti.

Immagino che ciò possa accadere anche con altre impostazioni di configurazione di mysql.


1

Ho avuto un problema simile su un VPS CentOS. Se MySQL non si avvia o continua a bloccarsi subito dopo l'avvio, provare questi passaggi:

1) Trova il file my.cnf (il mio si trovava in /etc/my.cnf) e aggiungi la riga:

innodb_force_recovery = X

sostituendo X con un numero compreso tra 1 e 6, iniziando da 1 e incrementando se MySQL non si avvia. L'impostazione su 4, 5 o 6 può eliminare i tuoi dati, quindi fai attenzione e leggi http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html prima .

2) Riavvia il servizio MySQL. Verrà eseguito solo SELECT e questo è normale a questo punto.

3) Scarica tutti i tuoi database / schemi con mysqldump uno per uno, non comprimere i dump perché dovresti decomprimerli in seguito comunque.

4) Sposta (o elimina!) Solo le directory del bd all'interno di / var / lib / mysql, preservando i singoli file nella radice.

5) Arrestare MySQL e rimuovere il commento dalla riga aggiunta in 1). Avvia MySQL.

6) Recupera tutti i bd scaricati in 3).

In bocca al lupo!


1

Prova quanto segue al prompt del terminale:

sudo mysql

Una volta che ti consente di accedere, puoi creare un nuovo utente e concedere i privilegi che desideri sullo specifico database a cui devono accedere.

Mysql 5.7 ha cambiato alcune cose e per impostazione predefinita utilizza il plug-in auth_socket (al contrario di mysql_native_password) per root per proteggere l'account dall'hacking. Puoi sovrascriverlo impostando il campo plugin per root, ma a meno che tu non abbia una buona ragione probabilmente non dovresti eludere la protezione. Soprattutto quando sudo mysqlè più facile dimysql -u root -p comunque.

Ho scoperto queste informazioni - di tutti i posti - da un sito di aiuto di Raspberry Pi . Ha funzionato come un fascino dopo Lubuntu 18.04 mi ha infastidito per un paio d'ore.


1

Innanzitutto creare dir / var / run / mysqld

con comando:

mkdir -p /var/run/mysqld

quindi aggiungere rigths alla dir

chown mysql:mysql /var/run/mysqld

dopo questo tentativo

mysql -u root

1

Ho avuto esattamente lo stesso problema. Dopo aver lottato per un'ora, ho trovato il modo di correggerlo senza reinstallare mysql-common, mysql-client, mysql-server.

Prima di tutto, vai su "/ var / run / mysqld". Scoprirai che mysql.sock non esiste. Basta rimuovere l'intera directory mysqld e ricrearla e fornire i privilegi necessari.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Ora, uccidi il processo mysql nella sua interezza. Potrebbe essere possibile che ti mostri "in attesa del pulitore di pagine" durante l'esecuzione del comando "/etc/init.d/mysql status" anche dopo aver chiuso il servizio.

Per chiudere completamente il servizio, utilizzare

# pkill -9 mysqld

Una volta terminato il processo, prova a riavviarlo utilizzando

# /etc/init.d/mysql start

E vedrai che funziona bene! E anche non ci sarà alcun problema a fermarlo.

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.