La directory mysqld_safe '/ var / run / mysqld' per il file socket UNIX non esiste


188

Durante l'avvio del server mysql 5.7.17 utilizzando mysqld_safe, si verificano i seguenti errori.

2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Come sistemarlo ?

Risposte:


507

Sembra strano che questa directory non sia stata creata al momento dell'installazione - hai modificato manualmente il percorso del file socket in my.cfg?

Hai provato semplicemente a creare questa directory tu stesso e a riavviare il servizio?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld

2
No, non ho apportato alcuna modifica manualmente. Proverò questo creando una directory. Grazie per i suggerimenti
Rajadip,

14
Succede su mysql 5.7. Quando si interrompe il servizio mysql / var / run / mysqld viene rimosso e ricreato quando si riavvia il servizio.
Capy,

2
Ho dovuto usare sudo per entrambi
Kasun Rajapaksha,

1
@Capy - votato - @Matt Clark - modifichi gentilmente la tua risposta per includere le informazioni che, anche se il DIR potrebbe essere stato creato, ma sarà eliminato se corriamo - $ sudo /etc/init.d/mysql stop, grazie
Rohit Dhankar,

se stai ancora riscontrando lo stesso errore seguendo questi passaggi NOTA che sudorisolverà questo dato che questa directory viene rimossa una volta che mysqlviene fermata e senza di sudoessa non avrà accesso a queste cartelle !!!
Jadeye il

72

Quando ho usato il codice mysqld_safe --skip-grant-tables &ma ho ricevuto l'errore:

La directory mysqld_safe '/ var / run / mysqld' per il file socket UNIX non esiste.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Ho risolto:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Ora uso lo stesso codice mysqld_safe --skip-grant-tables &e ottengo

mysqld_safe Avvio del demone mysqld con database da / var / lib / mysql

Se uso $ mysql -u roototterrò:

Versione server: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle e / o sue affiliate. Tutti i diritti riservati.

Oracle è un marchio registrato di Oracle Corporation e / o delle sue affiliate. Gli altri nomi possono essere marchi dei rispettivi proprietari.

Digita "help;" o '\ h' per aiuto. Digita '\ c' per cancellare l'istruzione di input corrente.

mysql>

Ora è tempo di cambiare la password:

mysql> use mysql
mysql> describe user;

Lettura delle informazioni sulla tabella per il completamento dei nomi di tabelle e colonne È possibile disattivare questa funzione per ottenere un avvio più rapido con -A

Database modificato

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

oppure Se hai un account root mysql che può connettersi da qualsiasi luogo, dovresti anche fare:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

Metodo alternativo:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

E se hai un account root a cui puoi accedere da qualsiasi luogo:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

ora è necessario quitda mysql e stop / start

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

ora di nuovo `mysql -u root -p 'e usa la nuova password per ottenere

mysql>


9
da MySQL 5.7.6 la colonna Password è stata rinominata "authentication_string" Qui puoi leggere di più al riguardo: bugs.mysql.com/bug.php?id=76655
IberoMedia

6

Lavora per me in CentOS:

$ service mysql stop
$ mysqld --skip-grant-tables &
$ mysql -u root mysql

mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

$ service mysql restart

0

Puoi provare quanto segue se il tuo database non ha dati O ne hai un altro per ripristinarli. Dovrai conoscere la password di root del server Ubuntu ma non la password di root di mysql.

È molto probabile che molti di noi abbiano installato "mysql_secure_installation" poiché questa è una buona pratica. Passare alla directory bin in cui esiste mysql_secure_installation. Può essere trovato nella directory / bin sui sistemi Ubuntu. Rieseguendo il programma di installazione, verrà richiesto se modificare la password del database di root.


Ma penso che questo debba usare solo un server mysql sicuro. Non fa differenza in questo problema.
Rajadip

Questo non aiuta se hai dimenticato la password di root in quanto devi prima inserire la password corrente.
Jistanidiot,
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.