Сброс пароля mysql debian

Обновлено: 03.07.2024

Вы забыли свой пароль root для MySQL? Не волнуйтесь, это случается со всеми нами.

В этой статье мы покажем вам, как сбросить пароль root MySQL из командной строки.

Определите версию сервера

В зависимости от версии сервера MySQL или MariaDB, которую вы используете в своей системе, вам нужно будет использовать разные команды для восстановления пароля root.

Вы можете узнать версию своего сервера, выполнив следующую команду:

Если в вашей системе установлен MySQL, результат будет выглядеть примерно так:

Или выведите такой вывод для MariaDB:

Обязательно запишите, какую версию MySQL или MariaDB вы используете.

Как сбросить корневой пароль MySQL или MariaDB

Выполните следующие действия, чтобы сбросить пароль root для MySQL / MariaDB:

1. Остановите службу MySQL / MariaDB.

Чтобы сначала изменить пароль root, вам необходимо остановить сервер MySQL. Для этого введите следующую команду:

2. Запустите сервер MySQL / MariaDB без загрузки таблиц привилегий.

Запустите сервер базы данных без загрузки таблиц предоставления:

Амперсанд & в конце приведенной выше команды заставит программу работать в фоновом режиме , так что вы можете продолжать использовать оболочку.

Когда используется --skip-grant-tables , любой может подключиться к серверу базы данных без пароля и со всеми предоставленными привилегиями.

3. Войдите в оболочку MySQL.

Теперь вы можете подключиться к серверу базы данных как пользователь root:

4. Установите новый пароль root.

Выполните следующие команды, если вы используете MySQL 5.7.6 и новее или MariaDB 10.1.20 и новее:

Если инструкция ALTER USER вас не работает, попробуйте напрямую изменить пользовательскую таблицу:

Выполните следующие команды, если у вас MySQL 5.7.5 и ранее или MariaDB 10.1.20 и ранее:

В обоих случаях, если все пойдет хорошо, вы должны увидеть следующий результат:

5. Остановите и запустите сервер базы данных в обычном режиме.

Теперь, когда пароль root установлен, остановите сервер базы данных и запустите его как обычно:

Вам будет предложено ввести новый пароль root.

Запустите сервер базы данных обычным образом:

Для MySQL введите:

Для MariaDB введите:

6. Подтвердите пароль.

Чтобы убедиться, что новый пароль root был применен правильно, введите:

Вам будет предложено ввести новый пароль root. Введите его, и вы должны войти на свой сервер базы данных.

Выводы

Мы показали вам, как сбросить пароль root для MySQL / MariaDB. Убедитесь, что ваш новый пароль root надежен и надежен, и храните его в надежном месте.

Инструкции в этом руководстве должны работать с любым современным дистрибутивом Linux, таким как Ubuntu 18.04, Debian 10 и CentOS 8.

Для доступа к базе данных MySQL или MariaDB нужно ввести имя пользователя и пароль. Во время установки автоматически создаётся учётная запись пользователя root. Это аналог суперпользователя в Linux для MySQL. Он может выполнять все действия со всеми базами данных, а также создавать и удалять других пользователей.

Обычно, пароль для него не устанавливается, и вы можете задать его вручную уже после завершения установки. Но если вы забыли пароль или он был установлен автоматически, но вы его не знаете, то вам может понадобится его сбросить. Это можно сделать несколькими способами. В этой статье мы разберём, как выполняется сброс пароля root MySQL.

В статье я буду использовать Ubuntu и MariaDB, но эта инструкция подойдёт и для других дистрибутивов. В командах с systemctl для Mariadb следует использовать mariadb, а для MySQL - mysql или mysqld.

1. Сброс пароля с помощью init-file

При запуске сервиса MySQL можно указать файл, из которого будут выполнены команды sql сразу после запуска. Адрес этого файла указывается опцией --init-file. Но сначала давайте создадим файл, который будет изменять файл нашего пользователя:


Затем остановите сервис, если он запущен:

sudo systemctl stop mysql

sudo systemctl stop mariadb

Теперь осталось выполнить наш файл:

sudo mysqld --user=mysql --init-file=/home/sergiy/init-file.txt --console


Подождите минуту, чтобы всё успело сработать как нужно, а затем остановите этот процесс. В консоли команда сообщит started as proccess и PID процесса, этот PID нам и нужен, чтобы его остановить. Например:

sudo kill -TERM 5356


Далее запустите mysql обычным способом и попробуйте войти со своим новым паролем:

sudo systemctl start mariadb

Сброс пароля с помощью skip-grant-tables

Кроме того, есть и другой способ сбросить пароль MySQL. Мы можем запустить сервис с параметром --skip-grant-tables. В этом режиме программа пропускает загрузку данных о пользователях и тогда вы можете авторизоваться без ввода пароля. Аналогично, сначала нужно остановить сервис:

sudo systemctl stop mariadb

Затем запустите mysql вручную с помощью такой команды:

sudo mysqld --user=mysql --skip-grant-tables


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


Так как мы загрузились без таблиц привелегий пользователей, то эти таблицы необходимо подгрузить сейчас:


Теперь можно сменить пароль для пользователя root:


Затем закройте консоль клиента mysql:

Завершите запущенный вручную сервис, таким же образом как в предыдущем пункте:

sudo kill -TERM 5356

И запустите mysql в нормальном режиме:

sudo systemctl start mariadb

Дальше вы можете авторизоваться от имени суперпользователя по этому паролю:

sudo mysql -u root -p

Но, нужно отметить, что для последних версий MariaDB это уже не нужно, так как программа поддерживает авторизацию без пароля если имя пользователя базы данных и имя учетной записи в системе совпадают. Поэтому, если вы хотите войти под root в консоль MySQL, достаточно запустить клиент через sudo.

Выводы

В этой статье мы рассмотрели, как выполняется сброс пароля MySQL Ubuntu. Разработчики постоянно что-то меняют в коде сервиса, поэтому в последних версиях команды ALTER USER или SET PASSWORD могут не работать. Поэтому мы используем универсальную команду UPDATE. Надеюсь, эта информация была для вас полезной.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Оцените статью:

Об авторе

8 комментариев

Losst, здравствуйте. Извиняюсь за некорректно написанную просьбу (и не в теме), но облазив всю сеть ухитрился проморгать пошаговую настройку убунту на слабом ноутбуке (пользуюсь Тошибой 2005 года выпуска, на Пент4 (дискретный видео), 1,7 гига с 2г озу), хотя в характеристиках пользования линукс указывается развёртывание оси на более меньшей оперативе. Если Вас не затруднит посвятить раздел собственно настройки системы на минимальных характеристиках: сама ось, браузер и минимум программ - офис, плейер, и там по мелочи, без программ требующих особых соответствий ядра и видеокарты..
С уважением.

Поставьте Debian последней версии. Если что-то будет не так с уставкой на Ваш компьютер, то будет видны все проблемы. Debian - это основа UBUNTU. UBUNTU - это производная от Debian. Debian всегда стабилен в отличие от UBUNTU, поверьте .

Андрей, день добрый. Дебиан легче чем Лубунту или нужно искать определённую сборку?

Не понимаю понятия легче или тяжелее. Что это значит - не понимаю!
Многие говорят, что окружение KDE - тяжёлое, о GNOME - лёгкое. Не пойму чем это утверждение обосновано? Пробовал оба окружения. Процессор тратит столько же энергии в обоих окружениях. Нагревается также одинаково. Время загрузки ОС зависит от настройки. Здесь мне вообще не понятно это утверждение. Бред какой-то!

Не было ни одного компьютера, на который я бы не поставил Дебиан.
Всё зависит от Вашего хотения. Может у Вас Дебиан сразу поставиться нормально. А, может придётся установить дополнительно пакеты с программами.

--skip-grant-tables прекрасно работает из конфигурационного файла.
вот не надо делать базе kill

А, вот как правильно уставить пароль в Krbf для KDE, чтобы потом проблем не было с доступом - это с удовольствием посмотрел!

Или, как убрать шипение микрофона в Linux при использовании PulseAudio, это когда звук пишешь. То же, хотелось бы узнать правильную информацию!

После установки MySQL 5.7.26 под управлением Ubuntu 18.04, пришло резкое понимание того, что залогиниться в mysql из-под текущего пользователя с учетной записью root не получится, никаких манипуляций с пользователями и правами провернуть не получиться. Потому что только root и только unix socket и никаких паролей.
Для успешного входа и манипуляций с mysql потребуется выполнить sudo mysql -u root или предварительно авторизоваться в системе как root и выполнить mysql -u root.
Честно говоря не вижу смысла менять способ авторизации mysql-пользователя root с сокета на пароль, создавать и вводить его, а потом этот самый пароль ещё и сбрасывать. Существующие настройки довольно безопасны: авторизация root (mysql) возможна только с localhost, прикрыть системный root по SSH (если SSH используется) тоже не проблема.
Лучше настроить дополнительных mysql-пользователей, например для использования phpmyadmin создать пользователя с таким же именем — phpmyadmin — и правами, что и у root, и авторизацией по паролю. После этого можно авторизоваться от имени любого пользователя сиcтемы, зная пароль phpmyadmin, но лучше создать каждому пользователю системы своего пользователя mysql с необходимыми правами, а еще лучше не создавать =).

В базе mysql пароли хранятся в зашифрованном виде, оператор UPDATE просто заменяет данный в таблице, то есть командой update нужно вставлять зашифрованные пароли.

Забыли root пароль от своей базы данных MySQL или MariaDB? От этого никто не застрахован.

Если эта неприятность случилась с вами, вы все равно можете получить доступ к БД и сбросить пароль – для этого понадобится доступ к серверу и учетная запись пользователя с привилегиями sudo.

Примечание: В свежих установках Ubuntu 20.04 конфигурация MySQL или MariaDB по умолчанию обычно позволяет получить полный доступ к БД (с привилегиями администратора) без ввода пароля, если соединение устанавливается из системного аккаунта root. В этом случае вы можете не сбрасывать пароль. Прежде чем приступить к сбросу root пароля базы данных, попробуйте получить доступ к БД с помощью команды sudo mysql. И только если вы получили отказ в доступе (или ранее изменили стандартную конфигурацию), выполните эти инструкции по сбросу.

Требования

Чтобы восстановить root пароль MySQL или MariaDB, вам потребуется:

  • Доступ к серверу Ubuntu 20.04, на котором работает MySQL или MariaDB, а также пользователь sudo или другой способ доступа к серверу с привилегиями root.
  • Чтобы протестировать описанные здесь методы восстановления пароля, не затрагивая ваш рабочий сервер, вы можете создать тестовый сервер и настроить его согласно этому руководству. Обязательно создайте пользователя с привилегиями sudo. Затем установите MySQL, следуя этому руководству, или MariaDB – по этим инструкциям.

Примечание: Оба руководства по установке СУБД сохраняют стандартную конфигурацию для root (которая не потребует пароля для аутентификации в БД, если вы можете получить доступ к системной учетной записи root).

1: Определение версии базы данных и остановка сервера

Ubuntu 20.04 использует либо MySQL, либо MariaDB – популярную замену, полностью совместимую с MySQL. Для восстановления пароля root нужно использовать разные команды – в зависимости от того, какую СУБД вы установили. Следуйте этому разделу, чтобы определить, какой сервер базы данных вы используете.

Чтобы узнать версию СУБД, введите:

Если вы используете MariaDB, это будет указано в выводе:

mysql Ver 15.1 Distrib 10.3.25- MariaDB , for debian-linux-gnu (x86_64) using readline 5.2

Если вы используете MySQL, ваш вывод будет выглядеть примерно так:

mysql Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))

Выяснив, какую СУБД вы используете, вы можете определить команды, которые следует выполнять в оставшейся части этого мануала.

Прежде чем менять пароль root, необходимо выключить сервер базы данных. Если вы используете MariaDB, вы можете сделать это с помощью команды:

sudo systemctl stop mariadb

Выключить сервер базы данных MySQL можно с помощью:

sudo systemctl stop mysql

Остановив базу данных, вы можете перезапустить ее и сбросить утраченный пароль root.

2: Перезапуск сервера базы данных без проверки прав доступа

Режим MySQL и MariaDB без проверки привилегий позволяет получить доступ к командной строке БД с правами root, не предоставляя действительного пароля. Чтобы включить этот режим, необходимо запретить базе данных загружать таблицы привилегий, в которых хранится информация о доступе пользователей. Поскольку такой режим представляет некоторую угрозу безопасности, рекомендуем также отключить сеть, чтобы другие клиенты не смогли подключиться к временно уязвимому серверу.

Процедура запуска сервера без загрузки таблиц привилегий в MariaDB и MySQL различается.

Запуск MariaDB без таблиц привилегий

Чтобы запустить сервер MariaDB без таблиц привилегий, мы воспользуемся юнит-файлом systemd – в нем нужно установить дополнительные параметры для демона сервера MariaDB.

sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"

Затем запустите сервер MariaDB:

sudo systemctl start mariadb

Эта команда не выведет на экран никаких результатов, но перезапустит сервер базы данных с учетом новых настроек.

Вы можете убедиться, что сервер запущен с помощью команды:

sudo systemctl status mariadb

Теперь вы сможете подключиться к базе данных как root пользователь MariaDB без пароля:

sudo mysql -u root

На экране сразу появится командная оболочка базы данных.

Теперь, когда у вас есть доступ к серверу базы данных MariaDB, вы можете изменить пароль root – перейдите к разделу 3.

Запуск MySQL без таблиц привилегий

Чтобы запустить сервер MySQL без таблиц привилегий, нужно изменить конфигурацию systemd для MySQL: при запуске сервер должен передавать дополнительные параметры командной строки.

Для этого выполните следующую команду:

sudo systemctl edit mysql

Эта команда откроет в редакторе nano новый файл, который вы будете использовать для редактирования переопределений сервиса MySQL. Они изменяют стандартные параметры MySQL.

Этот файл сейчас пуст. Добавьте в него следующие строки:

ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

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

Нажмите Ctrl-x, чтобы выйти из файла, затем y, чтобы сохранить внесенные изменения. Чтобы подтвердить имя файла, нажмите ввод.

Перезагрузите конфигурацию systemd, после чего эти изменения вступят в силу:

sudo systemctl daemon-reload

Теперь запустите сервер MySQL:

sudo systemctl start mysql

Команда не покажет на экране никаких данных, но сервер БД запустится. Таблицы привилегий и сетевые соединения буду отключены.

Подключитесь к базе данных как пользователь root:

sudo mysql -u root

Вы попадете в командную строку БД сразу, без ввода пароля.

Теперь все готово, вы можете изменить свой утерянный пароль.

3: Изменение root-пароля

Сервер базы данных работает в ограниченном режиме – без таблиц привилегий и без поддержки доступа по сети. Это позволяет вам войти на сервер без ввода пароля, но не дает выполнять команды, изменяющие данные. Чтобы сбросить root-пароль, вы должны загрузить таблицы привилегий сразу после того, как получили доступ к серверу.

Перезагрузить эти таблицы можно с помощью команды FLUSH PRIVILEGES:

Теперь вы можете изменить свой пароль root. Процедура изменения пароля также зависит от вашей СУБД.

Изменение пароля MariaDB

Если вы используете MariaDB, выполните следующую команду, чтобы установить пароль для учетной записи root.

Вместо new_password нужно указать ваш новый сложный пароль:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Вы увидите следующий вывод, который сообщит об изменении пароля:

Query OK, 0 rows affected (0.001 sec)

MariaDB поддерживает пользовательские механизмы аутентификации. Выполните следующие два оператора, чтобы MariaDB могла использовать свой стандартный механизм аутентификации для нового пароля root:

Для каждого оператора вы получите следующий результат:

Query OK, 0 rows affected (0.01 sec)

Ваш root-пароль MariaDB изменен. Введите exit, чтобы выйти из консоли БД, и перейдите к разделу 4, чтобы перезапустить сервер БД в обычном режиме.

Изменение пароля MySQL

Выполните следующий оператор, чтобы изменить пароль root пользователя MySQL. Замените new_password надежным паролем, который вы запомните.

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new_password';

MySQL поддерживает пользовательские механизмы аутентификации, поэтому данный оператор также гарантирует, что MySQL будет использовать свой стандартный механизм для root пользователя с новым паролем.

Вы увидите такой вывод, что значит, что пароль был успешно изменен:

Query OK, 0 rows affected (0.01 sec)

Теперь ваш пароль изменен. Выйдите из консоли MySQL, введя exit.

Давайте перезапустим БД в нормальном рабочем режиме.

4: Восстановление настроек сервера БД и перезапуск

Чтобы перезапустить сервер базы данных в его нормальном режиме, вы должны отменить внесенные вами изменения – то есть включить сеть и загрузить таблицы привилегий. Как и ранее, метод полностью зависит от базы данных, с которой вы работаете.

В MariaDB отключите переменную среды MYSQLD_OPTS, которую вы установили ранее:

sudo systemctl unset-environment MYSQLD_OPTS

Затем перезапустите сервис:

sudo systemctl restart mariadb

В MySQL удалите переопределения стандартных настроек systemd:

sudo systemctl revert mysql

Вы получите примерно такой вывод:

После этого перезапустите конфигурацию и примените изменения:

sudo systemctl daemon-reload

sudo systemctl restart mysql

Итак, база данных вернулась в нормальное состояние.

Убедитесь, что ваш новый пароль работает, попробуйте войти в БД как пользователь root:

Когда вам будет предложено ввести пароль, укажите свой новый пароль, и вы получите доступ к командной строке базы данных.

Заключение

С помощью этого мануала вы восстановили административный доступ к серверу MySQL или MariaDB. Убедитесь, что новый пароль, который вы выбрали, надежный и сложный.

За дополнительной информацией об управлении пользователями, о механизмах аутентификации или способах сброса паролей баз данных для других версий MySQL или MariaDB обратитесь к официальной документации MySQL или MariaDB.

Эта инструкция охватывает сброс пароля root как для более старых,

так и для новых версий MySQL и MariaDB.

Шаг 1 — Определяем версию системы управления
базой данных

Вы можете проверить вашу версию следующей командой:

mysql --version

Для MySQL вы увидите что-то вроде:

mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper

Для MariaDB вывод будет примерно таким:

mysql Ver 15.1 Distrib 10.0.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Запомните какая база данных и какой версии у вас запущена, поскольку они пригодятся

нам позже. Далее вам нужно остановить базу данных для ручного доступа к ней.

Шаг 2 — Остановка сервера базы данных

Для изменения пароля root вы должны заранее отключить сервер базы данных.

Для MySQL и MariaDB вы можете сделать это:

sudo systemctl stop mysql

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

Шаг 3 — Перезапуск сервера базы данных без проверки разрешений

Если вы запускаете MySQL и MariaDB без загрузки информации о привилегиях пользователя, она позволит вам без ввода пароля получить доступ к командной строке базы данных с привилегиями рута. Это позволит вам получить доступ к базе данных без знания парольной фразы.

Чтобы это сделать, вам нужно не дать базе данных загрузить таблицы привилегий, которые содержат информацию о привилегиях пользователя. Поскольку это несёт риск безопасности, вы также должны избежать сетевой активности, чтобы не допустить подключения других клиентов.

Запустите базу данных без загрузки таблиц привилегий и без доступа к сети:

sudo mysqld_safe --skip-grant-tables --skip-networking &

Амперсант на конце этой команды сделает так, что процесс запустится в фоне, поэтому вы сможете продолжать использовать ваш терминал.

Если вы видите ошибку

То выполните следующие команды:

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

И запустите ещё раз:

sudo mysqld_safe --skip-grant-tables --skip-networking &

Теперь вы можете подключиться к базе данных как пользователь рут, у которого не спросят пароль.

mysql -u root

Вы сразу же увидите приглашение оболочки базы данных.

Приглашение командной строки MySQL:

Приглашение командной строки MariaDB:

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.0.29-MariaDB-0ubuntu0.16.10.1 Ubuntu 16.10

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Теперь, когда у вас имеется рут доступ, вы можете изменить пароль рута.

Шаг 4 — Смена пароля рута

Простым способом смены пароля рута для современных версий MySQL является использование запроса ALTER USER. Тем не менее, эта команда не будет работать прямо сейчас, поскольку таблицы привилегий не загружены.

Давайте скажем серверу баз данных перегрузить таблицы привилегий введя команду

FLUSH PRIVILEGES;

Теперь действительно мы можем поменять пароль рута.

Для MySQL 5.7.6 и новее, а также для MariaDB 10.1.20 и новее используйте следующую команду:

Для MySQL 5.7.5 и старее, а также для MariaDB 10.1.20 и старее используйте:

Не забудьте поменять новый_пароль на выбранный вами новый пароль.

Примечание: если команда ALTER USER не работает, то это обычно является признаком более серьёзной проблемы. Тем не менее, вместо этой вы можете попробовать UPDATE … SET для сброса root пароля.

После этого не забудьте перегрузить таблицы привилегий.

В любом случае вы должны видеть подтверждение, что команда успешно выполнена. Вывод:

Query OK, 0 rows affected (0,29 sec)

Выходим из сессии:

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

Шаг 5 — Обычный перезапуск сервера базы данных

Для MySQL и MariaDB используйте:

sudo kill `sudo cat /var/run/mysqld/mysqld.pid`

Затем перезапустите сервис используя systemctl.

sudo systemctl start mysql

Теперь вы можете подтвердить, что новый пароль работает, запустите:

mysql -u root -p

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

Читайте также: