Този урок предоставя стъпки за нулиране или промяна на root паролата на MySQL сървъра, в случай че потребителят е забравил паролата. Предполага се, че имате достъп до системата, за да спрете и стартирате MySQL сървъра. Този урок е специфичен за MySQL 8.0 и по-горе, въпреки че трябва да работи извън кутията за по-стари версии на MySQL, включително MySQL 5.7 . Можем да нулираме root паролата по два начина, както е посочено по-долу.
Бележки :Можете също да следвате уроците за MySQL – Как да инсталирате MySQL 8 на Ubuntu, Как напълно да премахнете MySQL от Ubuntu и да научите основни SQL заявки с помощта на MySQL.
Актуализиране на паролата
Можем просто да актуализираме root паролата на MySQL, в случай че вече я знаем. Това може да се направи с помощта на командите, както е показано по-долу. ALTER командата е предпочитаната, тъй като работи на MySQL 5.7 и MySQL 8 , въпреки че можете да следвате всяка от командите.
# Влезте в MySQL
mysql -uroot -p
# ИЛИ
mysql -u root -p
# MySQL - 5.7.5 и по-стари
АКТУАЛИЗИРАНЕ на mysql.user ЗАДАЙТЕ password=PASSWORD('password') WHERE user='root';
# MySQL - 5.7.6 и по-нови
АКТУАЛИЗИРАНЕ mysql.user SET authentication_string=PASSWORD ("password") където user='root';
# ИЛИ
ЗАДАДЕТЕ ПАРОЛА ЗА 'root'@'localhost' =PASSWORD("password");
# MySQL - 5.7, 8
ПРОМЕНЯТЕ ПОТРЕБИТЕЛЯ 'root'@'localhost' ИДЕНТИФИЦИРАН С '<парола>';
# ИЛИ
ПРОМЕНЯТЕ ПОТРЕБИТЕЛЯ 'root'@'localhost' ИДЕНТИФИЦИРАН С mysql_native_password ОТ '<парола>';
# MySQL - 8
ПРОМЕНЯ ПОТРЕБИТЕЛ 'root'@'localhost' ИДЕНТИФИЦИРАН С caching_sha2_password ОТ '<парола>';
# Flush
FLUSH PRIVILEGES;
# Прекъсване на връзката
изход;
В случай, че сте забравили вашата root парола, можете да следвате или Процес A или Процес Б както е посочено по-долу.
Процес А – Сигурен
В този процес ще спрем и ще стартираме MySQL сървъра, за да използва init скрипта за промяна на root паролата.
Стъпка 1 - Спрете сървъра
Трябва да спрем сървъра като първа стъпка от този процес. Това може да се направи с помощта на командите, както е показано по-долу.
# Използване на init
sudo /etc/init.d/mysqld stop
# ИЛИ
sudo /etc/init.d/mysql stop
# Използване service
sudo service mysql stop
# Използване на systemd
sudo systemctl stop mysqld.service
# ИЛИ
sudo systemctl stop mysql
Стъпка 2 – Създайте Init файл
Сега създайте init файла и добавете командата за актуализиране на root паролата, както е показано по-долу.
# Създаване на Init файл - Използвайте предпочитания от вас редактор
sudo nano <път до init file>init-file.txt
# Добавете заявката за актуализиране на паролата
# MySQL - 5.7, 8
ПРОМЕНЯ ПОТРЕБИТЕЛ 'root'@'localhost' ИДЕНТИФИЦИРАН ОТ '<парола>';
# ИЛИ
ПРОМЕНЯТ ПОТРЕБИТЕЛЯ 'root'@'localhost' ИДЕНТИФИЦИРАН С mysql_native_password BY '';
# MySQL - 8
ALTER USER 'root'@'localhost' ИДЕНТИФИЦИРАН С caching_sha2_password ОТ '';
Стъпка 3 - Стартирайте MySQL Server
Сега стартирайте MySQL сървъра, като използвате init файла, както е показано по-долу.
# Стартирайте сървъра
sudo mysqld --init-file=<път до init file>init-file.txt &
# ИЛИ
sudo mysqld_safe --init-file=<път до init file>init-file.txt &
Може да изведе куп грешки в зависимост от инсталацията на сървъра ви.
Може да получите съобщение за грешка - mysqld_safe Directory '/var/run/
# Спрете сървъра
# Направете директория
sudo mkdir -p /var/run/mysqld
# Промяна на собственика
sudo chown mysql :mysql /var/run/mysqld
# Започнете с init file
sudo mysqld_safe --init-file=<път до init file>init-file.txt &
Може да получите съобщение за грешка - ERROR 2002 (HY000):Не мога да се свържа с локален MySQL сървър чрез сокет '/var/run/
# Стартирайте MySQL Server нормално - Ubuntu
sudo service mysql start
# Навигирайте до директорията sock
cd /var/run
# Вземете backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Спрете сървъра нормално - Ubuntu
sudo service mysql stop
# Възстановете sock
sudo mv ./mysqld.bak ./mysqld
# Стартирайте MySQL в небезопасен режим
sudo mysqld_safe --skip-grant-tables &
Стъпка 4 - Спрете и стартирайте MySQL сървъра
Сега спрете и стартирайте MySQL сървъра, като използвате обикновените команди, както е показано по-долу.
# Използване на init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# ИЛИ
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Използване на услуга
sudo service mysql stop
sudo service mysql start
# Използване на systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# ИЛИ
sudo systemctl стоп mysql
sudo systemctl стартиране mysql> предварително>
Прекратете съществуващите процеси, ако е необходимо. Използвайте само ако горните команди не работят за спиране и стартиране на сървъра.
# Намерете процесите
ps aux | grep mysqld
ps aux | grep mysql
# Убийте процесите
sudo killall mysqld
sudo killall mysql
Стъпка 5 – Тестване на паролата
Накрая тествайте новата парола, като използвате командата, както е показано по-долу.
# Тествайте нова парола
mysql -u root -p
Уверете се, че сте изтрили init файла, след като сте тествали новата си парола. В случай, че не се получи, можете да следвате Процес Б .
Процес Б – По-малко сигурен
В този процес ще спрем и след това ще стартираме MySQL сървъра, без да изискваме парола за влизане.
Стъпка 1 - Спрете сървъра
Трябва да спрем работещия в момента MySQL сървър като първа стъпка за завършване на този процес. Това може да се направи с помощта на командите, както е показано по-долу.
# Използване на init
sudo /etc/init.d/mysqld stop
# ИЛИ
sudo /etc/init.d/mysql stop
# Използване service
sudo service mysql stop
# Използване на systemd
sudo systemctl stop mysqld.service
# ИЛИ
sudo systemctl stop mysql
Стъпка 2 - Стартирайте MySQL без парола
Сега стартирайте MySQL сървър с деактивирана парола, като използвате командата, както е показано по-долу. Уверете се, че сте добавили
амперсанд (&) в края на тази команда. Освен това позволява --skip-networking автоматично за предотвратяване на отдалечени връзки.
# Стартирайте без парола
sudo mysqld_safe --skip-grant-tables &
Възможно е да получите съобщение за грешка - mysqld_safe Directory '/var/run/
mysqld ' за UNIX сокет файлне съществува . Трябва да създадемmysqld директория и направетеmysql като собственик, използвайки командите, както е показано по-долу.
# Спрете сървъра
# Направете директория
sudo mkdir -p /var/run/mysqld
# Промяна на собственика
sudo chown mysql :mysql /var/run/mysqld
# Стартирайте без парола
sudo mysqld_safe --skip-grant-tables &
Може да получите съобщение за грешка - ERROR 2002 (HY000):Не мога да се свържа с локален MySQL сървър чрез сокет '/var/run/
mysqld /mysqld .чорап' . В такъвслучай , следвайте посочените по-долу команди за Ubuntu, за да го разрешите.
# Стартирайте MySQL Server
sudo service mysql start
# Навигирайте до директорията sock
cd /var/run
# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Спрете сървъра
sudo service mysql stop
# Възстановете sock
sudo mv ./mysqld.bak ./mysqld
# Стартирайте MySQL в небезопасен режим
sudo mysqld_safe --skip-grant-tables &
Стъпка 3 - Свържете се с MySQL
Сега отворете друг терминал или се свържете със сървъра чрез друга обвивка, за да свържете клиента.
# Свързване директно
mysql
# Свързване като Root
mysql -uroot
# ИЛИ
mysql -u root
Стъпка 4 – Промяна на паролата
В тази стъпка променете root паролата, като използвате командите, както е показано по-долу. Можете също да се обърнете към секцията Актуализиране на паролата от този урок, за да използвате други команди за промяна на паролата.
# Промяна на парола
# MySQL - 5.7, 8
ПРОМЕНЯ ПОТРЕБИТЕЛ 'root'@'localhost' ИДЕНТИФИЦИРАН С '<парола>';
# ИЛИ
ПРОМЕНЯ ПОТРЕБИТЕЛ 'root'@'localhost' ИДЕНТИФИЦИРАН С mysql_native_password ОТ '<парола>';
# MySQL - 8
ПРОМЕНЯ ПОТРЕБИТЕЛ 'root'@'localhost' ИДЕНТИФИЦИРАН С caching_sha2_password';
# Flush
FLUSH PRIVILEGES;
# Прекъсване на връзката
изход;
Стъпка 5 - Спрете и стартирайте MySQL сървъра
Сега спрете и стартирайте MySQL сървъра, като използвате обикновените команди, както е показано по-долу.
# Използване на init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# ИЛИ
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Използване на услуга
sudo service mysql stop
sudo service mysql start
# Използване на systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# ИЛИ
sudo systemctl стоп mysql
sudo systemctl стартиране mysql> предварително>
Прекратете съществуващите процеси, ако е необходимо. Използвайте само ако горните команди не работят за спиране и стартиране на сървъра.
# Намерете процесите
ps aux | grep mysqld
ps aux | grep mysql
# Убийте процесите
sudo killall mysqld
sudo killall mysql
Стъпка 6 – Тестване на паролата
Накрая тествайте новата парола, като използвате командата, както е показано по-долу.
# Тествайте нова парола
mysql -u root -p
Резюме
Ето как можем да нулираме или променим паролата на root потребител или всеки друг потребител, в случай че сме забравили паролата.