3 простых способа сброса пароля для root-пользователя в MySQL
- Введение
- Самый простой способ для последних версий
- Сбросить пароль root в MySQL с помощью SKIP-GRANT-TABLES
- Сбросить пароль с помощью init-file
- Заключение
- Требования
- 1: Определение версии базы данных и остановка сервера
- 2: Перезапуск сервера базы данных без проверки прав доступа
- Запуск MariaDB без таблиц привилегий
- Запуск MySQL без таблиц привилегий
- 3: Изменение root-пароля
- Изменение пароля MariaDB
- Изменение пароля MySQL
- 4: Восстановление настроек сервера БД и перезапуск
- Заключение
- Удалить пароль root MySQL или MariaDB
- Облачные серверы с Ubuntu
- Как сбросить root-пароль MySQL
- Шаг 1 — Определяем версию системы управления базой данных
- Шаг 2 — Остановка сервера базы данных
- Шаг 3 — Перезапуск сервера базы данных без проверки разрешений
- Шаг 4 — Смена пароля рута
- Шаг 5 — Обычный перезапуск сервера базы данных
- Заключение
- Ошибка «—shared-memory, or —named-pipe should be configured on NT OS»
- Сброс пароля с помощью init-file
- Сброс пароля с помощью skip-grant-tables
- Выводы
- Об авторе
- Введение
- Шаг 1 – Определяем версию и останавливаем сервер базы данных.
- Шаг 2 – Перезапускаем сервер базы данных в режиме –skip-grant-tables
- Настройка режима –skip-grant-tables для MariaDB
- Настройка режима –skip-grant-tables для MySQL
- Шаг 3 – Изменение пароля root
- Меняем пароль root для MariaDB
- Меняем пароль root для MySQL
- Шаг 4 – Запускаем сервер базы данных в штатном режиме.
- Что такое MySQL и MariaDB
- Зачем может понадобиться сбрасывать пароль
- Как сбросить пароль root для сервисов MySQL и MariaDB
- Проверка и настройка для более удобного использования в дальнейшем
- Заключение
Введение
Доступы к серверам и сервисам нужно тщательно хранить, никому их не передавать и не терять. Но иногда случаются ситуации, когда пароли все-таки теряются или после смены их забывают записать, восстановить такой пароль тоже нет возможности. Если вы забыли пароль от root-пользователя MySQL — не отчаивайтесь, пароль root в MySQL легко сменить.
Важно понимать, что у вас должны быть права администратора на том сервере, где установлен MySQL-сервер. Это может быть либо root-пользователь напрямую, либо доступ через sudo.
Все описанные ниже действия нужно выполнять именно на этом сервере, то есть удаленно сменить пароль от root-пользователя не удастся.
Самый простой способ для последних версий
sudo mysql
Вы подключитесь к MySQL-серверу как root-пользователь. Теперь можно сбросить пароль одной командой. Вместо 12345 укажите свой пароль:
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';
Это самый простой способ, доступный в последних версиях MySQL при использовании плагина аутентификации auth_socket.
Сбросить пароль root в MySQL с помощью SKIP-GRANT-TABLES
В этом способе мы отключим проверку полномочий при запуске MySQL-сервера, и тогда подключиться сможет вообще любой пользователь без указания пароля. Важно, чтобы на это время сервер не был доступен по сети для внешних запросов, иначе к нему сможет подключиться любой желающий.
Для начала нужно остановить сервер:
sudo systemctl stop mysql
Теперь отредактируем service-файл, который запускает MySQL. Выполним команду:
sudo systemctl edit mysql
Откроется текстовый редактор, в котором мы можем переопределить дефолтный файл запуска. Вставим в него следующую конфигурацию:
[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
Мы указываем, что сервер нужно запустить без проверки grant-таблиц, а также ограничить подключения по сети. Сохраните файл и выйдите из текстового редактора. Теперь нужно обновить конфигурацию systemd, чтобы он учитывал наш новый конфиг, а затем можно запустить сервер:
sudo systemctl daemon-reload
sudo systemctl start mysql
mysql -u root
Так как мы запустили сервер без проверки полномочий, сначала нам нужно применить таблицу привилегий, чтобы мы могли записать в нее новый пароль. Вместо 12345 укажите свой пароль:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';
Выходим из MySQL и возвращаем настройки запуска по умолчанию. Для этого нам нужно удалить service-файл для systemd, перечитать конфигурацию и снова запустить сервер БД:
sudo systemctl revert mysql
sudo systemctl daemon-reload
sudo systemctl restart mysql
Сбросить пароль с помощью init-file
Еще один способ — написать init-файл. Это файл, который MySQL считывает перед запуском. В нем можно указать различные команды, в том числе установить пароль любого пользователя.
Создайте простой текстовый файл, например в вашей домашней директории. Назвать его можно как угодно. Вставьте в этот файл команду для смены пароля. Вместо 12345 укажите свой настоящий пароль:
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';
Теперь нужно остановить MySQL-сервер, чтобы при следующем запуске ему можно было указать путь к нашему init-файлу. Выполните команду:
sudo systemctl stop mysql
Теперь снова запустим сервер, при этом указав путь к созданному нами файлу:
sudo mysqld --user=mysql --init-file=/path/to/init-file &
После запуска этой команды в консоли отобразится PID этого процесса, например 7508. Значит все прошло успешно, MySQL-сервер запустился и выполнил нашу команду. Теперь нам нужно его остановить, удалить init-файл и запустить сервер обычным способом:
sudo kill -15 7508
rm /path/to/init-file
sudo systemctl start mysql
Заключение
Мы рассмотрели три разных способа сброса пароля для root-пользователя. Теперь MySQL-сервер работает в стандартном режиме, а у вас есть root-доступ к базе данных.
15 марта, 2021 12:03 пп
MariaDB, mySQL, Ubuntu
Забыли root пароль от своей базы данных MySQL или MariaDB? От этого никто не застрахован.
Так выглядит сброс пароля на MySQL
Если эта неприятность случилась с вами, вы все равно можете получить доступ к БД и сбросить пароль – для этого понадобится доступ к серверу и учетная запись пользователя с привилегиями 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, вам потребуется:
- Доступ к серверу 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-, 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.
Выполните следующую команду, которая устанавливает переменную среды MYSQLD_OPTS, которую MariaDB использует при запуске. Параметры –skip-grant-tables и –skip-networking запустят 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-пароля
Перезагрузить эти таблицы можно с помощью команды FLUSH PRIVILEGES:
Теперь вы можете изменить свой пароль root. Процедура изменения пароля также зависит от вашей СУБД.
Изменение пароля MariaDB
Если вы используете MariaDB, выполните следующую команду, чтобы установить пароль для учетной записи root.
Вместо 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 надежным паролем, который вы запомните.
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
Итак, база данных вернулась в нормальное состояние.
mysql -u root -p
Когда вам будет предложено ввести пароль, укажите свой новый пароль, и вы получите доступ к командной строке базы данных.
Заключение
С помощью этого мануала вы восстановили административный доступ к серверу MySQL или MariaDB. Убедитесь, что новый пароль, который вы выбрали, надежный и сложный.
За дополнительной информацией об управлении пользователями, о механизмах аутентификации или способах сброса паролей баз данных для других версий MySQL или MariaDB обратитесь к официальной документации MySQL или MariaDB.
Tags: MariaDB, MySQL, Ubuntu 20.04
После пары поисковых запросов Google и нахождения некоторых сообщений в блоге я успешно сбросил его.
Для тех, кто задается вопросом, как это сделать, в этом кратком руководстве объясняется, как мы можем сбросить пароль MySQL или MariaDB рута в Unix-подобных операционных системах.
Удалить пароль root MySQL или MariaDB
Во-первых, остановите сервер базы данных.
Если вы используете MySQL, введите следующую команду и нажмите клавишу Enter:
$ sudo systemctl stop mysql
$ sudo systemctl stop mariadb
Затем перезапустите сервер базы данных без проверки полномочий, используя следующую команду:
$ sudo mysqld_safe --skip-grant-tables &
Здесь -skip-grant-tablesoption позволяет вам подключаться без пароля и со всеми привилегиями.
Если вы запускаете свой сервер с этой опцией, он также включает параметр -skip-networkingoption, который используется для предотвращения подключения других клиентов к серверу базы данных.
И символ амперсанда (&) используется для запуска команды в фоновом режиме, поэтому вы можете работать с другими командами далее.
Помните, что вышеуказанная команда не достаточно надежна, ибо ваш сервер базы данных становится небезопасным.
Вы должны запустить эту команду только на короткий период, чтобы сбросить пароль.
Затем войдите на сервер MySQL / MariaDB как пользователь root:
$ mysql
UPDATE mysql.user SET Password=PASSWORD('NEW-PASSWORD') WHERE User='root';
Замените NEW-PASSWORD в приведенной выше команде на собственный пароль.
Затем введите следующие команды для выхода из консоли mysql:
FLUSH PRIVILEGES;
exit
Наконец, выключение запущенного сервера баз данных с опцией -skip-grant-tablesoption. Для этого запустите:
$ sudo mysqladmin -u root -p shutdown
Вам будет предложено ввести ваш пароль пользователя root mysql / mariadb, который вы установили на предыдущем шаге.
Теперь запустите службу mysql / mariadb, используя команду:
$ sudo systemctl start mysql
$ sudo systemctl start mariadb
Убедитесь, что пароль был действительно изменен:
$ mysql -u root -p
И это все на сегодня. Оставайтесь с нами.
Если вы забыли пароль root для базы данных MySQL или хотите его поменять в целях безопасности, нужно выполнить сброс пароля. В статье расскажем, как это сделать с помощью командной строки Windows.
1.Остановите сервер MySQL
- Проверьте, вошли ли вы в систему как администратор.
- Нажмите Win + R. Когда откроется окно «Выполнить», введите:
- Нажмите ОК.
- В списке служб найдите MySQL. Кликните правой кнопкой мыши по ней, после чего левой кликните Stop.
2. Измените пароль в текстовом редакторе
- В меню найдите «Блокнот», либо используйте путь: Меню > Стандартные Windows > Блокнот.
- Создайте новый текстовый документ с помощью команды пароля
- В текстовом редакторе введите строку:
- Проверьте, на месте ли кавычки и точка с запятой. Замените NewPassword своим новым паролем. «Файл» > «Сохранить как», чтобы сохранить файл в корень жесткого диска (C:\). Придумайте осмысленное имя файлу.
Команда localhost изменит пароль в вашей локальной системе. Если вы пытаетесь изменить пароль по сети, замените текущее имя хоста на localhost.
3. Запустите cmd
- Откройте командную строку и нажмите Ctrl+Shift+Esc.
- В меню выберите «Файл» > «Запустить новую задачу».
- Введите cmd.exe и установите флажок для запуска от имени администратора.
- Нажмите ОК.
Бесплатный тестовый доступ к облаку на 30 днейПолучить
4. Перезапустите сервер MySQL с обновлённым файлом конфигурации.
Чтобы перейти в каталог MySQL используйте командную строку:
cd «C:\Program Files\MySQL\MySQL Server 8.0\bin»
Вместо ИМЯ_ФАЙЛА вы вводите своё название, которое использовали в пункте 2.
5. Теперь можете зайти на свой сервер MySQL как root, введя новый пароль.
- Повторите вход с новым паролем, чтобы убедиться, что всё работает. Если у вас есть уникальные параметры конфигурации (например, запуск MySQL с параметром -defaults-file ), делайте всё, что нужно.
- После запуска MySQL и подтверждения смены пароля удалите файл C:\ИМЯ_ФАЙЛА.txt .
Вот и всё, вы благополучно сбросили пароль root для базы данных MySQL.
Облачные серверы с Ubuntu
Заказывайте Облачный сервер с чистой ОС или стеком LAMP/LEMP. Почасовая оплата, первый платёж — 100 рублей.
Если вы забыли или потеряли пароль от сервера баз данных, его можно сбросить. Для этого вам понадобится root-доступ к серверу по SSH. Инструкция подойдёт для следующих версий ПО:
- MySQL 8.0 и более ранние версии;
- Ubuntu 16.04, 18.04, 20.04.
В статье мы расскажем, как в MySQL сбросить пароль root.
В более поздних дистрибутивах к MySQL можно подключиться без ввода пароля. Такую возможность даёт плагин auth_socket. Доступ без пароля зависит от того, какой пользователь ОС подключается к MySQL. По умолчанию доступ имеет только root-пользователь.
Чтобы проверить, какой у вас доступ, подключитесь к серверу и выполните команду:
Если настроен доступ без пароля, на экране вы увидите примерно следующее:
Если на MySQL настроен доступ по паролю, вы столкнётесь с ошибкой:
Доступ для пользователя root без использования пароля запрещён
Если доступ без пароля не настроен, а пароль утерян, воспользуйтесь нашей инструкцией.
Как сбросить root-пароль MySQL
Чтобы выполнить сброс пароля MySQL, подключитесь к вашему серверу по SSH и следуйте инструкции:
Откройте файл параметров MySQL командой:
Добавьте в конец файла три параметра:
[mysqld] skip-grant-tables skip-networking
MySQL reset root password
- skip-grant-tables — параметр, который пропускает проверку прав. Это позволит подключиться к MySQL без пароля любому пользователю.
- skip-networking — параметр, который запретит удалённые подключения к серверу БД на время сброса пароля.
Чтобы сохранить изменения, нажмите CTRL+S. Затем закройте редактор сочетанием клавиш CTRL+X.
Чтобы запустить MySQL с нужными параметрами, перезапустите сервер БД командой:
systemctl restart mysql.service
Подключитесь к серверу баз данных при помощи команды:
Поменяйте пароль при помощи команды:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
Вместо password введите свой новый пароль.
Если при выполнении команды возникнет ошибка неправильного синтаксиса, попробуйте другую команду:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
Если возникнет ошибка «ERROR 1290 (HY000): The MySQL server is running with the —skip-grant-tables option so it cannot execute this statement», выполните команду из 6 шага.
Откройте конфигурационный файл:
Удалите из файла текст, который добавили во втором шаге:
[mysqld] skip-grant-tables skip-networking
Если на 2 шаге вы добавили только параметры skip-grant-tables и skip-networking, удалите только их.
Обязательно удалите опцию skip-grant-tables из конфигурационного файла после смены пароля. Если не удалить параметр, после перезапуска сервера баз данных подключаться к MySQL можно будет без пароля от имени любого пользователя.
Чтобы сохранить изменения, нажмите CTRL+S. Затем закройте редактор сочетанием клавиш CTRL+X.
Подключитесь к серверу баз данных:
mysql -uroot -p'password'
Вместо password напишите ваш новый пароль.
Готово, вы сбросили пароль от root-пользователя MySQL.
Если у вас Linux, то смотрите статью «Как сбросить пароль root для MySQL или MariaDB».
Пароль пользователя root спрашивается во время установки СУБД. Если установка делалась вручную, то есть без инстолятора, как это описано, например, в этой статье, то пароль может быть не установлен вовсе.
Если вы используете какие-то готовые сборки, которые включают в себя MySQL/MariaDB, то обратитесь за паролем на официальные сайты этих сборок. Также попробуйте такие учётные данные:
- Пользователь: root
- Пароль: root
Если вы действительно забыли пароль MySQL/MariaDB и вам нужно сбросить пароль root в MySQL на Windows, то данная статья расскажет, как это сделать.
Шаг 1 — Определяем версию системы управления базой данных
Найдите, в какой папке у вас расположен файл mysqld.exe. При установке по данной инструкции, этот файл расположен в папке C:\Server\bin\mysql-8.0\bin\.
Откройте командную строку. Нам понадобятся права администратора, поэтому делаем следующее: нажмите Win+x и там выберите Windows PowerShell (администратор):
Теперь перейдите в командной строке в директорию с файлом mysqld.exe, для этого используйте команду вида:
cd путь\до\папки
Например, у меня это папка C:\Server\bin\mysql-8.0\bin\, тогда команда такая:
cd C:\Server\bin\mysql-8.0\bin\
Нужно определить версию MySQL/MariaDB, для этого выполните команду:
.\mysql --version
C:\Server\bin\mysql-8.0\bin\mysqld.exe Ver 8.0.19 for Win64 on x86_64 (MySQL Community Server - GPL)
Шаг 2 — Остановка сервера базы данных
Для изменения пароля root вы должны заранее отключить сервер базы данных. Для MySQL и MariaDB вы можете сделать это командой:
net stop mysql
После того, как сервер остановлен, вы вручную получите к нему доступ для сброса пароля рута.
Шаг 3 — Перезапуск сервера базы данных без проверки разрешений
Если вы запускаете MySQL и MariaDB без загрузки информации о привилегиях пользователя, она позволит вам без ввода пароля получить доступ к командной строке базы данных с привилегиями рута. Это позволит вам получить доступ к базе данных без знания парольной фразы. Чтобы это сделать, вам нужно не дать базе данных загрузить таблицы привилегий, которые содержат информацию о привилегиях пользователя. Поскольку это несёт риск безопасности, вы также должны избежать сетевой активности, чтобы не допустить подключения других клиентов.
Запустите базу данных без загрузки таблиц привилегий и без доступа к сети:
.\mysqld --skip-grant-tables --skip-networking --shared-memory
Программа НЕ должна завершить работу, то есть теперь в это окно командной строки ничего нельзя ввести.
Шаг 4 — Смена пароля рута
Теперь вы можете подключиться к базе данных как пользователь рут, у которого не спросят пароль.
Открываем новое окно командной строки, можно без прав администратора.
Опять переходим в нужную папку
cd C:\Server\bin\mysql-8.0\bin\
И подключаемся к серверу MySQL/MariaDB
.\mysql -u root
Вы сразу же увидите приглашение оболочки базы данных. Приглашение командной строки MySQL:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.19 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Теперь, когда у вас имеется рут доступ, вы можете изменить пароль рута.
FLUSH PRIVILEGES;
Теперь действительно мы можем поменять пароль рута.
Для MySQL 5.7.6 и новее, а также для MariaDB 10.1.20 и новее используйте следующую команду:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
Для MySQL 5.7.5 и старее, а также для MariaDB 10.1.20 и старее используйте:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('новый_пароль');
Не забудьте поменять новый_пароль на выбранный вами новый пароль.
UPDATE mysql.user SET authentication_string = PASSWORD('новый_пароль') WHERE User = 'root' AND Host = 'localhost';
После этого не забудьте перегрузить таблицы привилегий:
FLUSH PRIVILEGES;
В любом случае вы должны видеть подтверждение, что команда успешно выполнена. Вывод:
Query OK, 0 rows affected (0.02 sec)
Выходим из сессии:
exit;
Пароль изменён, вы можете остановить запущенный вручную экземпляр сервера базы данных и перезапустить его как это было раньше.
Шаг 5 — Обычный перезапуск сервера базы данных
Для начала, остановите экземпляр сервера базы данных, который вы запустили вручную на Шаге 3. Для этого перейдите в окно с запущенной mysqld и нажмите Ctrl+c.
Затем перезапустите сервис обычным образом:
net start mysql
Теперь вы можете подтвердить, что новый пароль работает, запустите:
.\mysql -u root -p
Эта команда должна вызвать приглашение в который нужно ввести новый пароль. Введите его, вы должны получить доступ к интерфейсу командной строки базы данных, как это обычно и происходит.
Заключение
Теперь вы восстановили административный доступ к серверу MySQL или MariaDB. Убедитесь, что новый пароль рута, который вы выбрали, безопасный и храните его в надёжном месте.
Ошибка «—shared-memory, or —named-pipe should be configured on NT OS»
Если при запуске mysqld вы столкнулись со следующей ошибкой:
[ERROR] [MY-010131] [Server] TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS
Для доступа к базе данных MySQL или MariaDB нужно ввести имя пользователя и пароль. Во время установки автоматически создаётся учётная запись пользователя root. Это аналог суперпользователя в Linux для MySQL. Он может выполнять все действия со всеми базами данных, а также создавать и удалять других пользователей.
Обычно, пароль для него не устанавливается, и вы можете задать его вручную уже после завершения установки. Но если вы забыли пароль или он был установлен автоматически, но вы его не знаете, то вам может понадобится его сбросить. Это можно сделать несколькими способами. В этой статье мы разберём, как выполняется сброс пароля root MySQL.
В статье я буду использовать Ubuntu и MariaDB, но эта инструкция подойдёт и для других дистрибутивов. В командах с systemctl для Mariadb следует использовать mariadb, а для MySQL — mysql или mysqld.
Сброс пароля с помощью init-file
При запуске сервиса MySQL можно указать файл, из которого будут выполнены команды sql сразу после запуска. Адрес этого файла указывается опцией —init-file. Но сначала давайте создадим файл, который будет изменять файл нашего пользователя:
Затем остановите сервис, если он запущен:
sudo systemctl stop mysql
sudo systemctl stop mariadb
Теперь осталось выполнить наш файл:
Подождите минуту, чтобы всё успело сработать как нужно, а затем остановите этот процесс. В консоли команда сообщит started as proccess и PID процесса, этот PID нам и нужен, чтобы его остановить. Например:
sudo kill -TERM 5356
sudo systemctl start mariadb
mysql -u root -p
Сброс пароля с помощью skip-grant-tables
Кроме того, есть и другой способ сбросить пароль MySQL. Мы можем запустить сервис с параметром —skip-grant-tables. В этом режиме программа пропускает загрузку данных о пользователях и тогда вы можете авторизоваться без ввода пароля. Аналогично, сначала нужно остановить сервис:
sudo systemctl stop mariadb
Затем запустите mysql вручную с помощью такой команды:
Войдите в консоль управления mysql:
mysql -u root
Так как мы загрузились без таблиц привелегий пользователей, то эти таблицы необходимо подгрузить сейчас:
Теперь можно сменить пароль для пользователя root:
Затем закройте консоль клиента mysql:
Завершите запущенный вручную сервис, таким же образом как в предыдущем пункте:
sudo kill -TERM 5356
И запустите mysql в нормальном режиме:
sudo systemctl start mariadb
Дальше вы можете авторизоваться от имени суперпользователя по этому паролю:
sudo mysql -u root -p
Выводы
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Введение

В этой статье мы расскажем, как можно решить проблему, когда вы забыли или потеряли пароль root от MySQL или MariaDB. Отчаиваться не стоит, так как его можно сбросить, если иметь доступ к серверу и учетную запись пользователя операционной системы с привилегиями root. Данное руководство было протестировано в операционной системе Ubuntu 20.04 на двух популярных СУБД – MySQL и MariaDB.
Важно: В версии Ubuntu 20.04 дефолтная конфигурация MySQL или MariaDB позволяет получить доступ к базе данных (с правами администратора) без ввода пароля, если мы устанавливаем соединение с сервером БД под пользователем root . В этом случае нам нет необходимости сбрасывать пароль. Чтобы проверить была ли конфигурация аутентификации по умолчанию изменена, вводим команду sudo mysql. Если получаем ошибку access denied, то прибегаем к действиям, указанным с статье.
Шаг 1 – Определяем версию и останавливаем сервер базы данных.
Необходимы различные действия для сброса root пароля в зависимости от того, какая СУБД у нас установлена – MySQL или MariaDB. Для того, чтобы определить, какой сервер базы данных установлен в системе вводим:
mysql --version
Если используется MariaDB, то в выводе получим следующее: (разумеется, версия БД может меняться)
MariaDB output
mysql Ver 15.1 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
MySQL output
mysql Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
Чтобы произвести сброс root-пароля в MySQL или MariaDB, нам необходимо остановить сервер базы данных.
sudo systemctl stop mariadb
sudo systemctl stop mysql
После остановки базы данных производим ее перезапуск в безопасном режиме для сброса пароля root.
Шаг 2 – Перезапускаем сервер базы данных в режиме –skip-grant-tables
Запуск MySQL и MariaDB в режиме –skip-grant-tables позволяет подключиться к базе данных с правами root без пароля. Поскольку это уязвимый режим работы СУБД, рекомендуется запуск сервера БД в однопользовательском режиме .
Настройка режима –skip-grant-tables для MariaDB
Зададим переменную окружения MYSQLD_OPTS, используемую в MariaDB при запуске:
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
Запустим сервер БД:
sudo systemctl start mariadb
Корректность запуска сервера смотрим командой:
sudo systemctl status mariadb
Теперь подключаемся к базе данных пользователем root без пароля:
sudo mysql -u root
Подключившись к консоли MariaDB, меняем пароль root, как показано в Шаге 3 далее.
Настройка режима –skip-grant-tables для MySQL
Чтобы запустить сервер MySQL в этом режиме, изменим конфигурацию systemd для MySQL, чтобы при запуске сервер запустился с дополнительными параметрами.
sudo systemctl edit mysql
После выполнения команды будет открыт новый файл в nano-редакторе, где мы будем внесем необходимые параметры запуска сервера MySQL. Изначально файл будет пустым. Добавим следующие строки:
[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
Нажимаем CTRL-X, чтобы выйти из файла, затем – Y, чтобы сохранить внесенные изменения. Перезагружаем systemd, чтобы перечитать изменения:
sudo systemctl daemon-reload
Запускаем сервер MySQL:
sudo systemctl start mysql
и подключаемся пользователем root:
sudo mysql -u root
Далее переходим к Шагу 3.
Шаг 3 – Изменение пароля root
Поскольку СУБД запущена в режиме –skip-grant-tables, мы имеем возможность получить доступ к серверу баз данных без пароля, но не можем выполнять запросы на изменением данных. Чтобы установить пароль root , нам необходимо перезагрузить таблицы предоставления привилегий, выполнив инструкцию:
FLUSH PRIVILEGES;
Теперь сброс пароля root в MySQL или MariaDB возможен .
Меняем пароль root для MariaDB
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
В строке ‘new_password’ указываем свой пароль.
Output
Query OK, 0 rows affected (0.001 sec)
Далее установим механизм аутентификации по умолчанию:
UPDATE mysql.user SET authentication_string = '' WHERE user = 'root';
UPDATE mysql.user SET plugin = '' WHERE user = 'root';
Пароль изменен. Выходим из консоли MariaDB и смотрим Шаг 4 для перезапуска сервера базы данных в штатном режиме.
Меняем пароль root для MySQL
Для MySQL выполняем следующий запрос, заменив new_password на свой пароль. MySQL позволяет использовать настраиваемые механизмы аутентификации, поэтому добавляем инструкцию, указывающую MySQL использовать механизм аутентификации по умолчанию:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new_password';
Output
Query OK, 0 rows affected (0.01 sec)
Выходим из консоли MySQL и запускаем базу данных в нормальном режиме.
Шаг 4 – Запускаем сервер базы данных в штатном режиме.
Чтобы перезапустить сервер базы данных в штатном режиме, выполним следующие действия:
Удаляем переменную окружения MYSQLD_OPTS:
sudo systemctl unset-environment MYSQLD_OPTS
и перезапускаем сервер MariaDB:
sudo systemctl restart mariadb
Удаляем все изменения конфигурации демона systemd для MySQL:
sudo systemctl revert mysql
Вывод должен быть примерно таким:
Output
Removed /etc/systemd/system/mysql.service.d/override.conf.
emoved /etc/systemd/system/mysql.service.d.
Затем перезагружаем демон systemd:
sudo systemctl daemon-reload
и сервер MySQL:
sudo systemctl restart mysql
После этого база данных должна перейти в нормальное состояние. Пробуем подключится к серверу базы данных пользователем root с новым паролем:
mysql -u root -p
Успех! Не забывайте пароли=)
Что такое MySQL и MariaDB
MySQL и MariaDB – очень популярные системы управления базами данных, основанных на языке запросов SQL. Сегодня их используют для веб-сайтов, проектов по машинному обучению, в различных средах разработки и так далее.
Зачем может понадобиться сбрасывать пароль
Причины очевидны – текущий пароль может быть автоматически изменен после обновления пакетов службы базы данных на новую версию, пароль можно случайно забыть, может быть утеряно хранилище личных паролей и т.д.
Как сбросить пароль root для сервисов MySQL и MariaDB
Чтобы установить новый пароль для пользователя root сервиса управления базами данных (ВНИМАНИЕ – это НЕ системный пользователь root!), выполните следующие действия:
Войдите на свой сервер как привилегированный пользователь;
service mysql stop # для MySQL
service mariadb stop # для MariaDB
Временно разрешите аутентификацию без пароля и запустите службу:
Авторизуйтесь в системе управления базами данных и установите новый root-пароль:
Удалите директиву skip-grant-tables из файла и перезапустите службу:
service mysql stop; sed -i -e '$d' /etc/mysql/my.cnf && sed -i -e '$d' /etc/mysql/my.cnf; service mysql start
Обратите внимание – я не случайно запустил команду sed -i -e ‘$d’ дважды, а потому, что из конфигурационного файла нужно удалить две последние строки.
Проверка и настройка для более удобного использования в дальнейшем
Чтобы проверить все ли у вас получилось, давайте попробуем авторизоваться в сервисе:
mysql -uroot -p<новый_пароль>
Как видите, авторизация прошла успешно. Чтобы сделать дальнейшее использование сервиса более комфортным, можно сохранить новый пароль в специальный файл в вашем домашнем каталоге. Это позволит вам в дальнейшем не вводить пароль для входа в сервис:
cat << EOF > ~/.my.cnf
Заключение
Теперь вы знаете, как сбросить root-пароль для сервисов MySQL или MariaDB, знаете зачем может понадобиться эта операция и как сделать дальнейшее использование данного приложения более комфортным.
Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
ООО «ИТГЛОБАЛКОМ ЛАБС»
Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
ООО «ИТГЛОБАЛКОМ ЛАБС»