Я установил mysql-server на ящик Linux и забыл (упс) пароль пользователя root. Посмотрев в интернете, общий метод таков:

  1. Остановите MySQL (sudo service mysql stop)
  2. Запустите MySQL в специальном режиме (sudo mysqld_safe --skip-grant-tables)
  3. Войдите на локальный сервер и сбросьте пароль (mysql -u root)

Моя проблема под номером 2. Когда я запускаю команду, она говорит кое-что о регистрации и запуске демона, а затем заканчивается строкой

mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

и использование sudo service mysql status подтверждает, что MySQL действительно остановился.

Почему это останавливается так внезапно? И (что более важно), как я могу заставить его продолжать работать, чтобы я мог сбросить свой пароль?

заранее спасибо

РЕДАКТИРОВАТЬ Вот полный журнал "материал о loggin и запуск демона":

$ mysqld_safe --skip-grant-tables 
141219 16:55:20 mysqld_safe Logging to syslog.
141219 16:55:20 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
141219 16:55:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
$ 

РЕДАКТИРОВАТЬ 2 И вывод /var /log /syslog (я заменил мое имя хоста на <hostname>)

Dec 20 10:20:09 <hostname> mysqld_safe: Starting mysqld daemon with databases from /var/lib/mysql
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Can't create test file /var/lib/mysql/<hostname>.lower-test
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Can't create test file /var/lib/mysql/<hostname>.lower-test
Dec 20 10:20:09 <hostname> mysqld: #007/usr/sbin/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [ERROR] Aborting
Dec 20 10:20:09 <hostname> mysqld: 
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Note] /usr/sbin/mysqld: Shutdown complete
Dec 20 10:20:09 <hostname> mysqld: 
Dec 20 10:20:09 <hostname> mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended

3 ответа3

1

Эта проблема может быть вызвана из-за нескольких проблем. Вы можете найти точную ошибку в "tail /var/log/mysql/error.log". Я добавил исправление по умолчанию для такого рода проблем. Если приведенное ниже не работает, обновите нам распечатку из журнала, где мы можем попытаться получить некоторую информацию и двигаться дальше

Убейте весь процесс MySQL, используя следующую команду.

ps aux | grep mysql kill pid

Найдите путь демона mysqld с помощью команды which mysqld_safe

Запустите MySQL без таблиц грантов из расположения mysqld_safe

/mysqld_safe_available_directory/mysqld_safe --skip-grant-tables &

ex /bin /mysqld_safe

mysql -u root 

Шаги, чтобы установить новый пароль:

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit
0

ОК, похоже, либо /var /lib /mysql не существует, либо пользователь mysql не имеет прав доступа к нему. В любом случае, у вас проблемы хуже, чем забыть пароль root - либо у вас вообще нет базы данных, либо что-то изменило права доступа к файлу или владельца.

0

Я сталкивался с такой же проблемой. Прерывание происходит с разрешения на /var/lib/mysql папка принадлежит пользователю mysql , тогда root не имеет полного доступа

решил это:

$ sudo su - mysql

$ mysqld_safe --skip-grant-tables &

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .