Неможливо скинути пароль кореневого пароля MySQL, спробував усе


9

Ну, давайте спочатку уточнимо, що я прочитав усі запитання з питання запитання 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:/#

І зараз я справді не в змозі, тому будь-які пропозиції вітаються.

Відповіді:


16

У мене була така ж проблема, і я вирішив її, виконавши цей рядок:

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

перед виконанням цього рядка:

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

Для мене ці кроки спрацювали краще.

Я думаю, що існує більш чистий спосіб зробити це, але для мене це був швидкий та ефективний спосіб вирішення.


1
thx, що зробив трюк;)
Ilovelinux

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

1

Я не міг отримати mysql для перевстановлення незалежно від того, що я намагався, мені в кінцевому підсумку просто потрібно було спробувати відновити пароль.

Мені довелося пройти цей маршрут на Ubuntu 16.04.1 LTS. Я витратив годину або більше, намагаючись усі інші пропозиції з веб-сайту MySql щодо всього, що стосується SO, а також AskUbuntu Q & A, я нарешті зрозумів, що це працює з:

Примітка: в той час як він показав Введіть пароль для 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. вбити поточний mysqld pid
  2. запустити mysqld за допомогою sudo / usr / sbin / mysqld &
  3. run / usr / bin / mysql_secure_installation

    Виведення з mysql_secure_installation

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

    Забезпечення розгортання сервера MySQL.

    Введіть пароль для кореня користувача:

    ПЛУГІН ВАЛІДАЛЬНОГО ПАРОЛУ можна використовувати для тестування паролів та підвищення безпеки. Він перевіряє міцність пароля і дозволяє користувачам встановлювати лише ті паролі, які є достатньо безпечними. Хочете встановити плагін VALIDATE PASSWORD?

    Натисніть y | Y для Так, будь-яку іншу клавішу для Ні: ні Використовуючи існуючий пароль для root. Змінити пароль для root? ((Натисніть y | Y для Так, будь-яка інша клавіша для Ні): y

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

    Повторне введення нового пароля: за замовчуванням в установці MySQL є анонімний користувач, який дозволяє кожному входити в MySQL, не створюючи для них облікового запису користувача. Це призначено лише для тестування, і щоб зробити установку трохи плавнішою. Ви повинні їх видалити перед переміщенням у виробниче середовище.

    Видалити анонімних користувачів? (Натисніть y | Y для Так, будь-яку іншу клавішу для Ні): y Успіх.

    Зазвичай, root має бути дозволений для підключення лише з 'localhost'. Це гарантує, що хтось не може здогадатися за кореневим паролем з мережі.

    Відключити кореневе вхід у систему? (Натисніть y | Y для Так, будь-яку іншу клавішу для Ні): y Успіх.

    За замовчуванням MySQL має базу даних з назвою "тест", до якої може отримати доступ кожен. Це також призначене лише для тестування, і його слід видалити перед переміщенням у виробниче середовище.

    Видалити тестову базу даних та отримати доступ до неї? (Натисніть y | Y для Так, будь-яка інша клавіша для Ні): y

    • Видалення бази тестів ... Успіх.

    • Видалення привілеїв на тестовій базі даних ... Успіх.

    Перезавантаження таблиць привілеїв забезпечить негайне внесення всіх досі змін.

    Перезавантажити таблиці привілеїв зараз? (Натисніть y | Y для Так, будь-яку іншу клавішу для Ні): y Успіх.

    Все зроблено!


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міститься поле пароля.)

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