katalog mysqld_safe „/ var / run / mysqld” dla pliku gniazda UNIX nie istnieje

187

Podczas uruchamiania serwera mysql 5.7.17 przy użyciu mysqld_safe pojawia się następujący błąd.

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.

Jak to naprawić ?

Rajadip
źródło

Odpowiedzi:

505

Wydaje się dziwne, że ten katalog nie został utworzony podczas instalacji - czy ręcznie zmieniłeś ścieżkę do pliku gniazda w pliku my.cfg?

Czy próbowałeś po prostu samodzielnie utworzyć ten katalog i ponownie uruchomić usługę?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Matt Clark
źródło
2
Nie, nie wprowadziłem żadnych zmian ręcznie. Spróbuję tego, tworząc katalog. Dzięki za sugestie
Rajadip
14
Zdarza się to na mysql 5.7. Po zatrzymaniu usługi mysql / var / run / mysqld zostanie usunięty i ponownie utworzony po ponownym uruchomieniu usługi.
Capy,
2
Musiałem użyć sudo dla obu
Kasun Rajapaksha
1
@Capy - upvoted - @Matt Clark - uprzejmie edytujesz swoją odpowiedź, aby uwzględnić informację, że chociaż DIR mógł zostać utworzony, ale zostanie usunięty, jeśli uruchomimy - $ sudo /etc/init.d/mysql stop, dzięki
Rohit Dhankar
jeśli nadal sudopojawia się ten sam błąd, wykonaj następujące kroki UWAGA, która to rozwiąże, ponieważ ten katalog zostanie usunięty po mysqlzatrzymaniu i bez sudoniego nie będzie miał dostępu do tych folderów !!!
Jadeye
71

Kiedy użyłem kodu, mysqld_safe --skip-grant-tables &ale pojawia się błąd:

katalog mysqld_safe „/ var / run / mysqld” dla pliku gniazda UNIX nie istnieje.

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

Rozwiązałem:

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

Teraz używam tego samego kodu mysqld_safe --skip-grant-tables &i otrzymuję

mysqld_safe Uruchamianie demona mysqld z bazami danych z / var / lib / mysql

Jeśli $ mysql -u rootużyję, dostanę:

Wersja serwera: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Prawa autorskie (c) 2000, 2017, Oracle i / lub podmioty stowarzyszone. Wszelkie prawa zastrzeżone.

Oracle jest zastrzeżonym znakiem towarowym firmy Oracle Corporation i / lub jej spółek zależnych. Inne nazwy mogą być znakami towarowymi ich właścicieli.

Wpisz „help;” lub „\ h” w celu uzyskania pomocy. Wpisz „\ c”, aby wyczyścić bieżącą instrukcję wprowadzania.

mysql>

Teraz czas na zmianę hasła:

mysql> use mysql
mysql> describe user;

Odczytywanie informacji o tabeli w celu uzupełnienia nazw tabel i kolumn Możesz wyłączyć tę funkcję, aby uzyskać szybsze uruchomienie z -A

Baza danych zmieniona

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

lub Jeśli masz konto root mysql, które może łączyć się z dowolnego miejsca, powinieneś również:

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

Metoda alternatywna:

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

A jeśli masz konto root, które może uzyskiwać dostęp z dowolnego miejsca:

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

teraz trzeba quitz mysql i stop / start

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

teraz ponownie `mysql -u root -p 'i użyj nowego hasła, aby uzyskać

mysql>

Partha Sen
źródło
9
od czasu MySQL 5.7.6 zmieniono nazwę kolumny Hasło na „ string_
IberoMedia
6

Pracuj dla mnie w 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
Heli Perez
źródło
0

Możesz spróbować wykonać następujące czynności, jeśli baza danych nie zawiera żadnych danych LUB masz inną, aby je przywrócić. Musisz znać hasło root serwera Ubuntu, ale nie hasło root mysql.

Jest bardzo prawdopodobne, że wielu z nas zainstalowało „mysql_secure_installation”, ponieważ jest to najlepsza praktyka. Przejdź do katalogu bin, w którym istnieje mysql_secure_installation. Można go znaleźć w katalogu / bin w systemach Ubuntu. Po ponownym uruchomieniu instalatora pojawi się monit o zmianę hasła do głównej bazy danych.

David Baldwin
źródło
Ale myślę, że należy używać tylko bezpiecznego serwera mysql. Prawda? Nie ma znaczenia w tym problemie.
Rajadip
To nie pomaga, jeśli zapomniałeś hasła roota, ponieważ musisz najpierw wprowadzić aktualne hasło.
Jistanidiot