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. Перезагрузив установщик, вам будет предложено изменить пароль корневой базы данных.