Mysqld_safe Directory '/var/run/mysqld' для файла сокета UNIX не существует

При запуске mysql server 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.

Как это исправить?

Ответ 1

Кажется странным, что этот каталог не был создан при установке - вы вручную изменили путь к файлу сокета в my.cfg?

Вы пробовали просто создать этот каталог самостоятельно и перезапустить службу?

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

Ответ 2

Когда я использовал код mysqld_safe --skip-grant-tables &, но получаю ошибку:

mysqld_safe Directory '/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 [email protected]'localhost' = PASSWORD('newpwd');

или Если у вас есть учетная запись mysql root, которая может подключаться повсюду, вы также должны:

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

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

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

И если у вас есть учетная запись root, доступ к которой можно получить везде:

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

теперь нужно quit из mysql и stop/start

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

теперь снова `mysql -u root -p 'и используйте новый пароль для получения

mysql >

Ответ 3

Вы можете попробовать следующее, если у вашей базы данных нет данных, или у вас есть другой, чтобы восстановить эти данные. Вам нужно знать пароль root сервера Ubuntu, но не пароль root mysql.

Очень вероятно, что многие из нас установили "mysql_secure_installation", поскольку это лучшая практика. Перейдите в каталог bin, где существует mysql_secure_installation. Его можно найти в каталоге /bin в системах Ubuntu. Перезагрузив установщик, вам будет предложено изменить пароль корневой базы данных.