Что такое пароль по умолчанию для mysql ubuntu

Обновлено: 05.07.2024

Я установил сервер Ubuntu 16.04. В нем по умолчанию установлен сервер Mysql. Когда я пытаюсь получить доступ к mysql с помощью mysql -u root -p , я не могу войти в mysql, потому что у меня нет пароля. Есть ли пароль по умолчанию?

Я также пробовал с --skip-grant-tables , но даже это не работает. Даже попытка войти в систему только с помощью mysql -u root не удалась.

Этот вопрос помечен паролями mysql ubuntu ubuntu-16.04 ubuntu-server

~ Вопрос задан 23 февраля 2017 г., 16:44:43

16 ответов

Это то, что вам нужно:
sudo mysql --defaults-file=/etc/mysql/debian.cnf
MySql в Linux на основе Debian обычно использует файл конфигурации с учетными данными.

У меня была новая установка mysql-сервера на Ubuntu 18.10, и я не мог войти в систему с паролем по умолчанию. Только тогда я узнал, что по умолчанию пользователь root аутентифицируется с помощью auth_socket . Так как в ответе, когда плагин изменился на mysql_native_password , мы можем использовать пароль mysql по умолчанию

Там вы можете найти следующие строки

введите пароль из debian.cnf

--Обновить--

Иногда вам потребуется перезапустить сервер mysql.

~ Ответ дан 2019-01-13 02:26:00

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

В частности, войдите в систему как пользователь root или sudo -i и просто введите mysql, и вы войдете в систему как root пользователя mysql, после чего вы сможете создавать других операционных пользователей.

Если у вас нет root на хосте, я думаю, вам не следует разрешать вход в mysql как root?

Вы можете просто сбросить пароль root, запустив сервер с параметром --skip-grant-tables и войдя в систему без пароля, выполнив следующие действия от имени пользователя root или с помощью sudo:

~ Ответ дан 2017-03-01 18:24:01

Несмотря на то, что это старый вопрос, некоторые из нас до сих пор не могут найти на него ответ. По крайней мере, я сделал. Пожалуйста, не следуйте всем длинным решениям. Вы можете просто войти в свой mysql как root без ввода пароля (при условии, что это новая установка или вы не меняли пароль с момента установки), добавив sudo перед вашей командой mysql. $sudo mysql -uroot -p mysql> Это связано с тем, что mysql изменил модель безопасности в одной из последних версий.

Надеюсь, это поможет

~ Ответ дан 2019-09-04 12:15:21

Обратите внимание, что в системах Ubuntu, работающих под управлением MySQL 5.7 (и более поздних версий), пользователь root MySQL по умолчанию настроен на аутентификацию с помощью подключаемого модуля auth_socket, а не с помощью пароля. вам нужно будет переключить его метод аутентификации с auth_socket на mysql_native_password

как сказал @BeNiza, они изменили модель безопасности. Я сделал следующие шаги, и он работает для mysql 5.7.27 на Ubuntu 18.04

sudo apt установить mysql-сервер

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

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

вы должны нажимать Y и нажимать клавишу ENTER при каждом запросе.

Это вызовет проблемы, если вы используете слабый пароль

Вы можете просто войти в свой mysql как root без ввода пароля, добавив sudo перед вашей командой mysql.

mysql> ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ 'root'@'localhost', ИДЕНТИФИЦИРОВАННОГО С помощью mysql_native_password BY 'your-password';

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

ОШИБКА 1819 (HY000): Ваш пароль не соответствует требованиям текущей политики

mysql> FLUSH PRIVILEGES;

Примечание. После настройки корневого пользователя MySQL для аутентификации с помощью пароля вы больше не сможете получить доступ к MySQL с помощью ранее использовавшейся команды sudo mysql. Вместо этого вы должны выполнить следующее: mysql -u root -p

Я установил сервер Ubuntu 16.04. В нем по умолчанию установлен сервер Mysql. Когда я пытаюсь получить доступ к mysql с помощью mysql -u root -p , я не могу войти в mysql, потому что у меня нет пароля. Есть ли пароль по умолчанию?

Я также пробовал с --skip-grant-tables , но даже это не работает. Даже попытка войти в систему только с помощью mysql -u root не удалась.

@Debashisenator, если вы найдете мой ответ полезным, я буду признателен, если вы примете мой ответ... спасибо!

20 ответов 20

Это то, что вам нужно:
sudo mysql --defaults-file=/etc/mysql/debian.cnf
MySql в Linux на основе Debian обычно использует файл конфигурации с учетными данными.


У меня была новая установка mysql-сервера на Ubuntu 18.10, и я не мог войти в систему с паролем по умолчанию.Только тогда я узнал, что по умолчанию пользователь root аутентифицируется с помощью auth_socket . Так как в ответе, когда плагин изменился на mysql_native_password , мы можем использовать пароль mysql по умолчанию

Там вы можете найти следующие строки

введите пароль из debian.cnf

--Обновить--

Иногда вам потребуется перезапустить сервер mysql.


Этот ответ - единственная работа для меня после установки многих пакетов mysql-серверов в последних версиях Ubuntu. Спасибо.

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

В частности, войдите в систему как пользователь root или sudo -i и просто введите mysql, и вы войдете в систему как root пользователя mysql, после чего вы сможете создавать других операционных пользователей.

Если у вас нет root на хосте, я думаю, вам не следует разрешать вход в mysql как root?

Несмотря на то, что это старый вопрос, некоторые из нас до сих пор не могут найти на него ответ. По крайней мере, я сделал. Пожалуйста, не следуйте всем длинным решениям. Вы можете просто войти в свой mysql как root без ввода пароля (при условии, что это новая установка или вы не меняли пароль с момента установки), добавив sudo перед вашей командой mysql. $sudo mysql -uroot -p mysql> Это связано с тем, что mysql изменил модель безопасности в одной из последних версий.

Надеюсь, это поможет

Вы можете просто сбросить пароль root, запустив сервер с параметром --skip-grant-tables и войдя в систему без пароля, выполнив следующие действия от имени пользователя root или с помощью sudo:


После этого я получил сообщение об ошибке "Плагин 'unix_socket' не загружен". Решение: stackoverflow.com/a/37879449/2934081 (добавьте обновление пользовательского набора plugin="mysql_native_password" после строки обновления пользователя).

Обратите внимание, что в системах Ubuntu, работающих под управлением MySQL 5.7 (и более поздних версий), пользователь root MySQL по умолчанию настроен на аутентификацию с помощью подключаемого модуля auth_socket, а не с помощью пароля. вам нужно будет переключить его метод аутентификации с auth_socket на mysql_native_password

как сказал @BeNiza, они изменили модель безопасности. Я сделал следующие шаги, и он работает для mysql 5.7.27 на Ubuntu 18.04

sudo apt установить mysql-сервер

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

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

вы должны нажимать Y и нажимать клавишу ENTER при каждом запросе.

Это вызовет проблемы, если вы используете слабый пароль

Вы можете просто войти в свой mysql как root без ввода пароля, добавив sudo перед вашей командой mysql.

mysql> ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ 'root'@'localhost', ИДЕНТИФИЦИРОВАННОГО С помощью mysql_native_password BY 'your-password';

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

ОШИБКА 1819 (HY000): Ваш пароль не соответствует требованиям текущей политики

mysql> FLUSH PRIVILEGES;

Примечание. После настройки корневого пользователя MySQL для аутентификации с помощью пароля вы больше не сможете получить доступ к MySQL с помощью ранее использовавшейся команды sudo mysql. Вместо этого вы должны выполнить следующее: mysql -u root -p

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

Прежде чем перейти непосредственно к решению, предполагается, что вы используете последнюю версию базы данных MySQL в системе Ubuntu 20.04 LTS. В этом посте будет пошаговое руководство по изменению корневого пароля MySQL в Ubuntu 20.04. Итак, не теряя времени, приступим.

Шаг 1. Проверьте версию MySQL в Ubuntu 20.04

Прежде всего проверьте версию вашего MySQL, потому что этот пост содержит решение по изменению пароля root в версии 8 или выше. Если версия вашего MySQL ниже 8, то решение будет другим. Команда для проверки версии MySQL приведена ниже.


Шаг 2. Остановите сервер MySQL

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


Проверьте состояние сервера MySQL для подтверждения с помощью команды:


Шаг 3. Пропустите таблицы грантов и нетворкинг

Чтобы запустить сервер MySQL без предоставления таблиц и проверки сети, установите переменную среды MYSQLD_OPTS, которую MySQL использует при запуске.


Хорошо, переменная среды установлена, и мы можем войти в оболочку MySQL без ввода пароля.

Шаг 4. Запустите службу MySQL

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


Шаг 5. Подтвердите состояние сервера MySQL

Подтвердите статус службы MySQL, работает она или нет:


Шаг 6. Войдите в оболочку MySQL

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

Без ввода пароля вы войдете в оболочку MySQL.


Шаг 7. Измените пароль root

Сначала сбросьте привилегии.


Выберите базу данных MySQL.

И установите новый пароль для пользователя root с помощью команды Alter, введя следующую инструкцию.


Вместо «новый-пароль» укажите свой новый пароль. После успешной смены корневого пароля MySQL выйдите из оболочки MySQL.


Шаг 8. Завершите все процессы MySQL и перезапустите службу MySQL

Прежде всего, завершите все процессы MySQL еще до перезапуска сервера MySQL.


После вывода, как показано на рисунке, нажмите «Ввод» и перезапустите сервер MySQL с помощью приведенной ниже команды.


Шаг 9. Войдите с новым паролем

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


Укажите недавно установленный пароль в команде ALTER.


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

Подведение итогов

В этом пошаговом руководстве вы узнали, как изменить корневой пароль MySQL в системе Ubuntu 20.04 LTS. Этот пост содержит подробное и простое для понимания решение по сбросу корневого пароля MySQL в Ubuntu 20.04.

В этой статье мы сбросим корневой пароль MySQL в Ubuntu, запустив MySQL с параметром --skip-grant-tables.

Введение

Мы все были там. Вы забыли корневой пароль MySQL или он таинственным образом изменился 🤔. К счастью, есть способ обойти это с помощью параметра --skip-grant-tables.

Прежде чем вы начнете, если у вас возникли проблемы со входом в phpMyAdmin и вы получаете сообщение об ошибке Отказано в доступе для пользователя 'root'@'localhost' , но вы уверены, что ваш пароль root верен, пожалуйста, сначала обратитесь к этой статье: Не удается войти в phpMyAdmin: mysqli_real_connect(): (HY000/1698): Доступ запрещен для пользователя 'root'@'localhost'

1. Подтвердите версию MySQL

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

Если вы используете MySQL версии 8, вы увидите что-то вроде:

Если вы используете MySQL версии 5, вы увидите что-то похожее на это:

2. Перезапустите MySQL с помощью skip-grant-table

Чтобы пропустить таблицы привилегий и сбросить пароль root, мы должны сначала остановить службу MySQL. Введите свой пароль Linux, если будет предложено.

Убедитесь, что каталог /var/run/mysqld существует и установлен правильный владелец.

Теперь запустите MySQL с параметром --skip-grant-tables. Здесь требуется &.

Вы должны увидеть что-то похожее:

Теперь нажмите ENTER, чтобы вернуться к командной строке Linux BASH.

3. Изменить корневой пароль MySQL

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

После входа в систему вы увидите приглашение mysql>.

MySQL 8 — сброс корневого пароля

Для MySQL 8 в Ubuntu выполните следующие команды.

Замените your_password_here своим собственным. (Создайте надежный пароль здесь)

Снова сбросить привилегии.

Теперь перейдите к шагу 4 ниже.

MySQL 5.7 — сброс корневого пароля

Для MySQL 5.7 в Ubuntu: запустите эту команду, чтобы изменить пароль root. Замените your_password_here на свой. (Создайте надежный пароль здесь)

Измените подключаемый модуль аутентификации на mysql_native_password .

Теперь перейдите к шагу 4 ниже.

MySQL 5.6 — сброс корневого пароля

Для MySQL 5.6 в Ubuntu выполните эту команду, чтобы изменить пароль root. Замените your_password_here на свой. (Создайте надежный пароль здесь)

Измените подключаемый модуль аутентификации на mysql_native_password .

Теперь перейдите к шагу 4 ниже.

4. Проверить новый корневой пароль

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

Если вы видите сообщение, подобное приведенному ниже, нажмите ENTER, чтобы продолжить.

Запустите MySQL еще раз.

Снова войдите в MySQL, и теперь вам будет предложено ввести пароль.

Введите пароль root для MySQL. Если все верно, вы должны увидеть что-то вроде:

Сообщите мне, помогло ли это. Подпишитесь на меня в Twitter, Facebook и YouTube или 🍊 купите мне смузи.

пс. Я увеличил свой доход от AdSense на 200% с помощью ИИ 🤖. Прочтите мой обзор Ezoic, чтобы узнать, как это сделать.

114 ответов

Оставить ответ

Легенда, многие другие руководства просто не работают. Спасибо

Потрясающий простой учебник. Сэкономил мне кучу времени! Спасибо!

Спасибо.
Это руководство очень помогло

*единственный туториал, который действительно помог 🙂
СПАСИБО!

Это руководство работает для меня.
Заранее спасибо

Большое спасибо 😀
избавьте меня от новой новой установки

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

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

охххххх, какая радость от поиска сокровищ ಥ_ಥ

Да, чувак, весь этот процесс сработал, большое спасибо, отличная статья

шедевр! работало все. спасибо

мил gracias, en verdad me ayudó mucho

Большое спасибо!

Большое спасибо. Мне удалось сбросить пароль root.

100% ОК, благодарю вас за POST, решение проблемы великой скорби. установить мой сервер linux, не подключая платформу к базе данных.

Большое спасибо за этот пост!

Большое спасибо, братан, я только что потратил 3 дня на это, но не нашел правильного ответа, спасибо, ЛЮБОВЬ ИЗ ИНДИИ

Отлично, братан, ты спас меня. ЛЮБОВЬ ИЗ УГАНДЫ

Милая милость, de manera sumamente profesional me saco de un gran apuro.

Ты спас меня, братан 🙂

Отлично..
Наконец-то я попал на эту страницу и смог войти в консоль phpmyadmin.

Вы спасли мне жизнь.
Весь день у меня работает только ваше решение.
Спасибо, спасибо!

Спасибо. Единственное решение, которое сработало для меня.

Отлично!
Вы спасли мне жизнь

Большое спасибо! это помогло <3

Эта строка sudo mkdir /var/run/mysqld сэкономила мне часы. Красивая статья.

Очень хороший учебник, простой и сработал с первого раза. Проблема в том, что с каждой версией mysql меняются правила и ни одно из старых правил не работает. Это может быть очень неприятно. Даже набор шагов, перечисленных на самом сайте MySQL, не работает. Как смешно.

Большое спасибо! это работает

Отличная статья!! Спасибо.

У меня возникла проблема с перезапуском Mysql с --skip-grant-tables. Я получил следующее сообщение об ошибке:
> Не удается подключиться к локальному серверу MySQL через сокет ‘/var/mysql/mysql.sock’ (38)

Проверив журнал ошибок, я обнаружил, что Mysql не может быть запущен, поскольку неизвестная переменная «log-syslog=1»:
> [ОШИБКА] [MY-000067] [Сервер] неизвестная переменная ‘log-syslog=1’.

Чтобы решить эту проблему, отредактируйте файл /etc/mysql/mysql.conf.d/mysqld_safe_syslog.cnf и прокомментируйте вторую строку:

Большое спасибо. Я потратил часы на чтение ответов, но, наконец, ваш блог помог мне.

Вы спасли мою степень

большое спасибо.

Спасибо, сработало!!

Действительно эффективный документ.

Лучший ответ, который я когда-либо получал на вопрос «Как сбросить пароль MySQL».
Большое спасибо.

geary@NUC:/var/run/mysql$ sudo mysql –user=root mysql
ОШИБКА 2002 (HY000): невозможно подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld .sock' (2)

Чтобы решить эту проблему, отредактируйте файл /etc/mysql/mysql.conf.d/mysqld_safe_syslog.cnf и прокомментируйте вторую строку:

Большое спасибо.

Спасибо, проблема решена менее чем за 5 минут

Наконец-то все готово.
Я пробовал это в течение часа с других веб-сайтов, но безуспешно, но эта страница решила мою проблему.
по состоянию на 29 января 2021 г. с версией

Отлично! Ты большой парень.

Это единственный документ, правильно объясняющий процесс. Спасибо

Вы спасли мой день!

Вы не поверите, но я провел 3 часа в Google, чтобы найти ваше решение! Большое спасибо за то, что позволили мне, наконец, заснуть сейчас!

Я потратил на это целый день, и ваш пост был единственным, который действительно работал. Спасибо.

Большое спасибо.

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

Спасибо, все работает.

Хорошо объяснил. Избавь меня от проблем..

Мне тоже помогло! множество благодарностей

Работает как шарм. Пробовал несколько других сайтов, но ничего не вышло. Спасибо за это!

спасибо, я не смог найти команды mysql 8

большое спасибо — документация не распространяется на V8 — потратил несколько дней на борьбу с этим — ценю четкие и правильные инструкции — ура.

Спасибо. Отлично.

Наконец-то после того, как вы выполнили шаги с 3 других сайтов, ваш наконец-то заработал! Спасибо!

Большое спасибо, очень полезный пост

ты классный, спасибо

Большое спасибо.

Эта статья очень полезна, спасибо!

Большое спасибо. Отлично работает для меня!

Спасибо, это помогло!

Отлично! сработало отлично

большое спасибо

Это сработало безупречно, спасибо, очень полезно и легко понять!

Спасибо за очень полезную информацию. Это работает.

мне ха servido muy bien !

БОЛЬШОЕ СПАСИБО

Лучшее объяснение!

Большое спасибо!
Вы только что спасли мне жизнь!

А как насчет MySQL 8? Кажется, PASSWORD() больше не поддерживается. mysql> обновить пользовательский набор authentication_string=PASSWORD('my_password'), где user='root'; выдает синтаксическую ошибку рядом с ('my_password') …

Спасибо, что сообщили мне.

В эту статью добавлены инструкции по сбросу пароля root для MySQL 8.

Отлично.
Прямо на инструкции….
Большое спасибо!

спасибо, спасибо, боже мой

Большое спасибо за блокировку с 8 часов

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

mysql> update user set plugin=”mysql_native_password”, где User='root';
Запрос выполнен успешно, затронуто 0 строк (0,00 с)
Сопоставлено строк: 0 Изменено: 0 Предупреждений: 0

mysql> сброс привилегий;
Запрос выполнен успешно, затронуто 0 строк (0,00 с)

Спасибо, это было действительно полезно

Большое спасибо, приятель.

На шаге 2 я получаю

2019-12-29T22:46:28.239042Z mysqld_safe Запись в системный журнал.
2019-12-29T22:46:28.242008Z mysqld_safe Запись в '/var/log/mysql/error.log'.
2019-12-29T22:46:28.258774Z mysqld_safe Запуск демона mysqld с базами данных из /var/lib/mysql
2019-12-29T22:46:32.136840Z mysqld_safe mysqld из файла pid /var/run/mysqld /mysqld.pid закончился

Затем при запуске
sudo mysql --user=root mysql
ОШИБКА 2002 (HY000): невозможно подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock'. (2)

спасибо, это помогло мне, mysql 5.7.27-0ubuntu.18.04.1 на Ubuntu

Вы лучшие, спасибо 🙂

Нашел вас через Google с фильтром «менее месяца», иначе там много дерьма, лол

Большое спасибо — после просмотра нескольких решений это самый краткий и полезный ответ; это решило все последующие проблемы после того, как я забыл корневой пароль mysql.

Я просматриваю все веб-страницы, но ни одна из них не может мне помочь, но ваши страницы мне очень помогают …….
спасибо .

mysql> обновить пользовательский набор plugin="mysql_native_password", где User='root';

ОШИБКА 1524 (HY000): Плагин mysql_native_password не загружен

Ошибка в том, что mysql не распознает плагин с «мой пароль»?!

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

В этом руководстве показано, как сбросить пароль root для баз данных MySQL и MariaDB, установленных с помощью менеджера пакетов apt в Ubuntu 20.04. Процедура изменения пароля root зависит от того, установлена ​​ли у вас MySQL или MariaDB, а также от конфигурации systemd по умолчанию, которая поставляется с дистрибутивом или пакетами других поставщиков. Хотя инструкции в этом руководстве могут работать с другими версиями системы или сервера базы данных, они были протестированы с Ubuntu 20.04 и пакетами из дистрибутива.

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

Предпосылки

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

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

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

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

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

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

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

Если вы используете MariaDB, в выходных данных вы увидите «MariaDB», которому предшествует номер версии:

Вы увидите такой вывод, если используете MySQL:

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

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

Для MySQL выключите сервер базы данных, выполнив:

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

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

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

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

Настройка MariaDB для запуска без таблиц грантов

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

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

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

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

Вы можете убедиться, что он запущен с помощью sudo systemctl status mariadb .

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

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

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

Настройка MySQL для запуска без таблиц грантов

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

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

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

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

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

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

Перезагрузите конфигурацию systemd, чтобы применить эти изменения:

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

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

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

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

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

Шаг 3. Изменение корневого пароля

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

Укажите серверу базы данных перезагрузить таблицы разрешений, введя команду FLUSH PRIVILEGES:

Теперь вы можете изменить пароль root. Используемый метод зависит от того, используете ли вы MariaDB или MySQL.

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

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

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

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

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

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

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

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

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

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

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

Шаг 4. Возврат сервера базы данных к обычным настройкам

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

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

Затем перезапустите службу с помощью systemctl :

Для MySQL удалите измененную конфигурацию systemd:

Вы увидите вывод, аналогичный следующему:

Затем перезагрузите конфигурацию systemd, чтобы применить изменения:

Наконец, перезапустите службу:

Теперь база данных перезапущена и вернулась в нормальное состояние. Убедитесь, что новый пароль работает, войдя в систему как пользователь root с паролем:

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

Заключение

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

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

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

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