Не удалось сбросить пароль root для MySQL, пробовал все

9

Что ж, давайте сначала уточнить, что я прочитал все вопросы от Ask Ubuntu об этой проблеме и выполнил все шаги из официальных документов:

help.ubuntu.com

dev.mysql.com

Я использую Ubuntu 16.04.1 LTS

Поэтому, прежде чем кто-то предложит что-то, что я, вероятно, уже попробовал, я собираюсь показать, что я сделал:

root@localhost:/# sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

MySQL остановился правильно.

root@localhost:/# sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

Здесь я не знаю, сработало ли это или нет, поэтому я все равно следую инструкциям.

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

Кажется, это не работает, так как служба не запущена. Поскольку я не могу продолжить со следующих шагов, я пробую другой метод (чистка).

После использования:

sudo apt-get --purge remove
sudo apt-get install

Я пытаюсь сделать следующий шаг:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

Поскольку это также не работает, я попробовал другие методы, упомянутые в MySQL:

Так что я убиваю MySQL процесс, как указано тут же я использую

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

Теперь, когда у меня выходили из опций, я также попробую другой метод, упомянутый здесь в Ask Ubuntu:

root@localhost:/# sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

А сейчас у меня действительно нет вариантов, поэтому любые предложения приветствуются.

Ilovelinux
источник

Ответы:

16

У меня была та же проблема, и я решил ее, выполнив следующую строку:

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld

перед выполнением этой строки:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

Для меня эти шаги работали лучше.

Я думаю, что есть более чистый способ сделать это, но для меня это был быстрый и эффективный обходной путь.

Одрадек
источник
1
спасибо, что сделал
свое дело
Это происходит на MySQL 5.7. Когда вы останавливаете службу mysql / var / run / mysqld удаляется и воссоздается при повторном запуске службы.
Capy
1

Я не мог заставить MySQL переустановить, что бы я ни пытался, мне просто нужно было попытаться сбросить пароль.

Мне пришлось пройти этот маршрут на Ubuntu 16.04.1 LTS. Я потратил час или больше, пробуя все другие предложения с веб-сайта MySql для всего, что касается SO, а также вопросов и ответов AskUbuntu, но, наконец, я начал работать с ним:

Примечание: хотя он показывал «Введите пароль для пользователя root», у меня не было исходного пароля, поэтому я просто введите тот же пароль, который будет использоваться в качестве нового пароля.

Примечание: не было /var/log/mysqld.log только /var/log/mysql/error.log

Также обратите внимание, что это не сработало для меня:
sudo dpkg-reconfigure mysql-server-5.7

И не сделал:
sudo dpkg-reconfigure --force mysql-server-5.5

Создать каталог службы MySQL.
sudo mkdir /var/run/mysqld

Дайте пользователю MySQL разрешение на запись в каталог службы.
sudo chown mysql: /var/run/mysqld

Затем:

  1. убить текущий pid mysqld
  2. запустите mysqld с помощью sudo / usr / sbin / mysqld &
  3. Запустите / usr / bin / mysql_secure_installation

    Вывод из mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Обеспечение безопасности развертывания сервера MySQL.

    Введите пароль для пользователя root:

    VALIDATE PASSWORD PLUGIN можно использовать для проверки паролей и повышения безопасности. Он проверяет надежность пароля и позволяет пользователям устанавливать только те пароли, которые достаточно безопасны. Вы хотите установить плагин VALIDATE PASSWORD?

    Нажмите y | Y для Да, любую другую клавишу для Нет: нет Использование существующего пароля для пользователя root. Изменить пароль для root? ((Нажмите y | Y для Да, любую другую клавишу для Нет): y

    Новый пароль:

    Повторно введите новый пароль: по умолчанию в установке MySQL есть анонимный пользователь, что позволяет любому входить в MySQL без необходимости создания учетной записи пользователя. Это предназначено только для тестирования, и чтобы установка прошла более гладко. Вы должны удалить их, прежде чем переходить в производственную среду.

    Удалить анонимных пользователей? (Нажмите y | Y для Да, любую другую клавишу для Нет): y Успешно.

    Обычно пользователю root разрешается подключаться только с «localhost». Это гарантирует, что кто-то не сможет угадать пароль root от сети.

    Запретить root-вход удаленно? (Нажмите y | Y для Да, любую другую клавишу для Нет): y Успешно.

    По умолчанию MySQL поставляется с базой данных «test», доступ к которой может получить каждый. Это также предназначено только для тестирования и должно быть удалено перед переходом в производственную среду.

    Удалить тестовую базу данных и получить к ней доступ? (Нажмите y | Y для Да, любую другую клавишу для Нет): y

    • Удаление тестовой базы данных ... Успех.

    • Удаление привилегий на тестовой базе данных ... Успех.

    Перезагрузка таблиц привилегий гарантирует, что все сделанные изменения вступят в силу немедленно.

    Перезагрузить таблицы привилегий сейчас? (Нажмите y | Y для Да, любую другую клавишу для Нет): y Успешно.

    Все сделано!

JGlass
источник
0

У меня была такая же проблема, и я решил ее:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(Здесь authentication_stringхранится поле пароля.)

Раджани
источник