Mysql
 sql >> база данни >  >> RDS >> Mysql

Нулиране на Root парола на MySQL

Този урок предоставя стъпки за нулиране или промяна на 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/ mysqld ' за UNIX сокет файл не съществува . Трябва да създадем mysqld директория и направете mysql като собственик, използвайки командите, както е показано по-долу.

# Спрете сървъра

# Направете директория
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/mysqld /mysqld .чорап' . В такъв случай следвайте посочените по-долу команди, за да го разрешите.

# Стартирайте 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 потребител или всеки друг потребител, в случай че сме забравили паролата.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. актуализиране на няколко реда, използвайки лимит в mysql?

  2. mysql_real_escape_string() защитава ли НАПЪЛНО от SQL инжектиране?

  3. Работа с cPanel MySQL бази данни

  4. Как работи функцията MID() в MySQL

  5. Копиране/дублиране на база данни без използване на mysqldump