Каталог mysqld_safe '/ var / run / mysqld' для файлу сокетів UNIX не існує


188

Під час запуску сервера mysql 5.7.17, використовуючи mysqld_safe, слідкуйте за помилками.

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.

Як це виправити?

Відповіді:


507

Здається дивним, що цей каталог не був створений при встановленні - ви вручну змінили шлях файлу сокета в my.cfg?

Ви намагалися просто створити цей каталог самостійно та перезапустити службу?

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

2
Ні, я не робив жодних змін вручну. Я спробую це, створивши каталог. Дякую за пропозиції
Раджадіп

14
Це відбувається на mysql 5.7. Після припинення служби mysql / var / run / mysqld видаляється та відтворюється, коли ви знову запускаєте послугу.
Capy

2
Довелося використовувати
судо

1
@Capy - прихильне - @Matt Clark - ви ласкаво відредагуйте свою відповідь, щоб включити інформацію про те, що навіть DIR, можливо, був створений, але його буде видалено, якщо ми запустимо - $ sudo /etc/init.d/mysql stop, дякую
Rohit Dhankar

якщо ви все-таки отримуєте ту саму помилку, виконуючи ці кроки, ПРИМІТКА, що sudoце вирішить, оскільки цей каталог буде видалено один раз, коли він mysqlбуде зупинений і без sudoнього не буде доступу до цих папок !!!
Jadeye

71

Коли я використовував код, mysqld_safe --skip-grant-tables &але я отримую помилку:

Каталог mysqld_safe '/ var / run / mysqld' для файлу сокетів UNIX не існує.

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

Я вирішив:

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

Зараз я використовую той же код mysqld_safe --skip-grant-tables &і отримую

mysqld_safe Запуск демона mysqld з базами даних з / var / lib / mysql

Якщо я користуюся $ mysql -u root я отримаю:

Версія сервера: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Авторське право (c) 2000, 2017, Oracle та / або його філії. Всі права захищені.

Oracle є зареєстрованою торговою маркою корпорації Oracle та / або її філій. Інші імена можуть бути торговими марками відповідних власників.

Введіть "help;" або "\ h" для довідки. Введіть '\ c', щоб очистити поточний оператор вводу.

mysql>

Тепер час змінити пароль:

mysql> use mysql
mysql> describe user;

Читання інформації таблиці для заповнення назв таблиці та стовпців Ви можете вимкнути цю функцію, щоб отримати швидший запуск з -A

База даних змінена

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

або Якщо у вас є кореневий обліковий запис mysql, який може з'єднуватися звідусіль, ви також повинні зробити:

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

Альтернативний метод:

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

А якщо у вас є кореневий обліковий запис, до якого можна отримати доступ звідусіль:

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

тепер потрібно quitз mysql і зупинити / почати

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

тепер знову `mysql -u root -p 'і використовуйте новий пароль, щоб отримати

mysql>


9
оскільки MySQL 5.7.6 колонку Password було перейменовано на "authentication_string". Тут ви можете прочитати більше про це: bugs.mysql.com/bug.php?id=76655
IberoMedia

6

Робота для мене в 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

Ви можете спробувати наступне, якщо у вашій базі даних немає жодних даних АБО у вас є інший шлях для відновлення цих даних. Вам потрібно знати пароль кореневого пароля сервера Ubuntu, але не пароль root mysql.

Напевно, багато хто з нас встановили "mysql_secure_installation", оскільки це найкраща практика. Перейдіть до каталогу бін, де існує mysql_secure_installation. Його можна знайти в каталозі / bin для систем Ubuntu. Перезапустивши інсталятор, вам буде запропоновано змінити пароль кореневої бази даних.


Але я думаю, що це використовувати лише захищений сервер mysql. Це не так? Це не має значення в цій проблемі.
Раджадіп

Це не допоможе, якщо ви забули кореневий пароль, оскільки спочатку потрібно ввести поточний пароль.
Jistanidiot
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.