что делать если забыл пароль mysql

Сброс пароля root в MySQL и MariaDB

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

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

Требования

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

1: Определение версии MySQL и MariaDB

Большинство современных дистрибутивов Linux поставляются с MySQL или MariaDB (аналог MySQL,полностью совместимый с этой БД). Способ восстановления пароля во многом зависит от версии СУБД.

Чтобы узнать версию программы, введите:

На экране появится такой вывод:

# MySQL
mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
# или MariaDB
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

Запишите название и версию СУБД: эти данные пригодятся в дальнейшем.

2: Остановка сервера БД

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

# MySQL
sudo systemctl stop mysql
# MariaDB
sudo systemctl stop mariadb

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

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

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

Чтобы запустить БД без таблиц привилегий, введите:

Амперсанд (&) в конце команды переведёт её в фоновый режим, и вы сможете продолжить работу с терминалом.

Подключитесь к БД как root. Пароль не будет запрошен:

Вы получите доступ к командной оболочке базы данных:

# MySQL
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
# MariaDB
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

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

В современных версиях MySQL изменить пароль пользователя root можно с помощью команды ALTER USER. Однако данная команда не сработает без таблиц привилегий, которые вы отключили, чтобы получить доступ к БД.

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

Теперь можно изменить пароль root.

В MySQL 5.7.6+ и MariaDB 10.1.20+ используйте команду:

ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘new_password’;

Примечание: Если команда ALTER USER не работает, это обычно свидетельствует о более серьезной проблеме. Вы можете попробовать изменить пароль с помощью UPDATE … SET.

UPDATE mysql.user SET authentication_string = PASSWORD(‘new_password’) WHERE User = ‘root’ AND Host = ‘localhost’;

В MySQL 5.7.5, MariaDB 10.1.20 и более ранних версиях СУБД введите:

SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘new_password’);

Примечание: Вместо new_password укажите новый пароль пользователя root.

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

После обновления пароля на экране должен появиться такой вывод:

Query OK, 0 rows affected (0.00 sec)

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

5: Перезапуск сервера

Остановите сервер баз данных, запущенный вручную в разделе 3. Эта команда находит (ID процесса) MySQL или MariaDB и отправляет SIGTERM, чтобы выйти после выполнения операции очистки.

# MySQL
sudo kill `cat /var/run/mysqld/mysqld.pid`
# MariaDB
sudo kill `/var/run/mariadb/mariadb.pid`

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

# MySQL
sudo systemctl start mysql
# MariaDB
sudo systemctl start mariadb

Убедитесь, что новый пароль работает:

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

Заключение

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

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

Источник

Как сбросить root-пароль MySQL или MariaDB

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

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

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

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

Требования

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

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

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

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

Читайте также:  чем лечить когда сводит ноги судорогой по ночам и что делать

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

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

Если вы используете 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.

Выполните следующую команду, которая устанавливает переменную среды MYSQLD_OPTS, которую MariaDB использует при запуске. Параметры –skip-grant-tables и –skip-networking запустят MariaDB без загрузки таблиц привилегий или сетевых функций.

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

sudo systemctl start mariadb

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

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

sudo systemctl status mariadb

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

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

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

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

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

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

sudo systemctl edit mysql

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

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

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

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

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

sudo systemctl daemon-reload

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

sudo systemctl start mysql

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

Подключитесь к базе данных как пользователь 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:

UPDATE mysql.user SET authentication_string = » WHERE user = ‘root’;

UPDATE mysql.user SET plugin = » WHERE user = ‘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 на ОС Ubuntu 20.04

1621 просмотров 6 2021-03-18 2021-04-07

Введение

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

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

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

Если используется MariaDB, то в выводе получим следующее: (разумеется, версия БД может меняться)

Чтобы произвести сброс root-пароля в MySQL или MariaDB, нам необходимо остановить сервер базы данных.

Для MariaDB:

Для MySQL:

После остановки базы данных производим ее перезапуск в безопасном режиме для сброса пароля root.

Шаг 2 – Перезапускаем сервер базы данных в режиме –skip-grant-tables

Настройка режима –skip-grant-tables для MariaDB

Зададим переменную окружения MYSQLD_OPTS, используемую в MariaDB при запуске:

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

Корректность запуска сервера смотрим командой:

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

Подключившись к консоли MariaDB, меняем пароль root, как показано в Шаге 3 далее.

Настройка режима –skip-grant-tables для MySQL

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

После выполнения команды будет открыт новый файл в nano-редакторе, где мы будем внесем необходимые параметры запуска сервера MySQL. Изначально файл будет пустым. Добавим следующие строки:

Нажимаем CTRL-X, чтобы выйти из файла, затем – Y, чтобы сохранить внесенные изменения. Перезагружаем systemd, чтобы перечитать изменения:

Запускаем сервер MySQL:

и подключаемся пользователем root:

Далее переходим к Шагу 3.

Шаг 3 – Изменение пароля root

Меняем пароль root для MariaDB

В строке ‘new_password’ указываем свой пароль.

Далее установим механизм аутентификации по умолчанию:

Пароль изменен. Выходим из консоли MariaDB и смотрим Шаг 4 для перезапуска сервера базы данных в штатном режиме.

Меняем пароль root для MySQL

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

Выходим из консоли MySQL и запускаем базу данных в нормальном режиме.

Шаг 4 – Запускаем сервер базы данных в штатном режиме.

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

Для MariaDB

Удаляем переменную окружения MYSQLD_OPTS:

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

Для MySQL

Удаляем все изменения конфигурации демона systemd для MySQL:

Вывод должен быть примерно таким:

Затем перезагружаем демон systemd:

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

Источник

FAQ по восстановлению забытого пароля администратора в MySQL

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

Как восстановить забытый пароль администратора?

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

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

Читайте также:  какой корень в слове пушистый

MySQL сервер хранит информацию о привилегиях в таблицах привилегий служебной базы mysql. При старте сервера, содержимое таблиц привилегий загружается в память и в дальнейшей работе используется копия, находящаяся в памяти. Команда flush privileges ; обновляет данные о привилегиях, загруженные в память. Таким образом, данная команда отменяет режим skip-grant-table и включает проверку прав доступа и привилегий.

Для запуска сервера в режиме skip-grant-tables проще всего временно добавить строчку skip-grant-tables в my.ini (для ОС Linux файл будет называться my.cnf) в секции [mysqld]

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

Дальнейшие действия будут зависеть от используемого вами клиента:

Как восстановить root-пользователя?

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

Распространенные случаи.

Ошибка ( 1045 Access denied for user ‘root’ @ ‘localhost’ ( using password: No ) ) означает, что подключение производится с пустым паролем.
Ошибка ( 1045 Access denied for user ‘root’ @ ‘localhost’ ( using password: Yes ) ) указывает на неверный пароль.
Обе данные ошибки могут возникнуть вследствии недостатока прав доступа для выполнения требуемой операции, т.е. пользователя зовут root, но права у него не рутовые. На практике такая ситуация маловероятна.

Удалённый доступ root-пользователя.

Если при доступе под рутом с удаленной машины вы получаете ошибку ( 1045 Acces denied for user ‘root’ @ ‘%’ ), то это может оказаться следствием того, что в настройках по умолчанию удаленный root-пользователь оказался не совсем «рутом», т.е. не обладает всеми привилегиями. Для проверки нужно (под настоящим «рутом») сравнить результат выполнения команд:

Ссылки

В официальной документации описан оригинальный способ восстановления администраторского пароля. Подробнее см. How to Reset the Root Password

Источник

Довольно часто происходит такая ситуация, что пароль для учетной записи root в MySQL необходимо восстановить, поменять или сбросить. Хорошо, если он известен, но бывают случаи, когда пароль был утерян или неизвестен с самого начала. В данной статье пойдет речь о том, как этот пароль восстановить, имея доступ к серверу, на котором запущен mysql-server для обоих случаев, когда пароль о учетной записи root ИЗВЕСТЕН и НЕ ИЗВЕСТЕН.

Как поменять пароль root в MySQL

Если пароль root ИЗВЕСТЕН

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

1) Подключаемся в консоль MySQL сервера с правами root (не забываем ввести пароль, после появления соответствующего запроса):

2) Меняем пароль для пользователя root:

Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8. )

Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3. )

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

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

3) Перезагружаем привилегии, чтобы изменения вступили в силу:

4) Для выхода из консоли MySQL сервера выполняем команду выхода:

После этого, пароль должен поменяться.

Если пароль root НЕ ИЗВЕСТЕН

Если вы не знаете текущий пароль root (потеряли, забыли) в MySQL, то придется пойти чуть более сложным путем, чем описанные действия выше:

1) Останавливаем mysqld:

2) Проверяем, что нет запущенных процессов mysqld:

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

3) Создаем каталог /var/run/mysqld для запуска mysqld в safe режиме из консоли

4) Делаем владельцем данного каталога пользователя mysql (чтобы не было проблем с правами)

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

6) Подключаемся из консоли к серверу mysqld и выбираем базу данных mysql:

7) Используем плагин mysql_native_password, иначе в некоторых случаях будем получать ошибку «ERROR 1524 (HY000): Plugin ‘auth_socket’ is not loaded«, а нам это не нужно:

Вывод в результате выполнения данной команды должен быть примерно таким:

8) Перезагружаем привилегии:

9) Меняем пароль для нужного пользователя, в нашем случае это root:

Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8. )

Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3. )

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

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

9) После чего, вводим команду exit для отключения:

10) Выключаем запущенный в ручном режиме Mysqld сервер:

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

Если же команда не сработала и вы получаете вот такую (или любую другую) ошибку:

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

11) Проверяем, что нет запущенных процессов mysqld:

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

12) Запускаем Mysql-server в нормальном режиме:

И пытаемся подключиться к нашему серверу с новым паролем, который мы установили.

Источник

Сказочный портал