В прошлой статье мы научились устанавливать программу MySQL Workbench и при установке создавали пользователя для работы с программой.
В этой статье вы научитесь создавать нового пользователя, изменять пароль, добавлять привелегии для пользователя и удалять пользователей в MySQL через консоль MySQL Workbench.
Для выполнения любой из этих команд вам нужно иметь права доступа root. Также, обязательно выполняйте FLUSH PRIVILEGES после любого изменения в правах доступа.
1. Создание пользователя MySQL с неограниченными правами доступа
Как только вы начнёте использовать MySQL, вам будет предоставлено имя пользователя и пароль. Эти начальные учётные данные дают вам привелегии «root-доступа». Пользователь с правами доступа root имеют полный доступ ко всем базам данных и таблицам внутри этих баз.
Если вы хотите создать еще одного пользователя с неограниченными правами, тогда вам необходимо:
1. Запустить консоль «MySQL Workbench Command Line Client»
2. В консоли напишите команду:
CREATE USER 'имя пользователя'@'localhost' IDENTIFIED BY 'пароль';
Вместо имени пользователя и пароля введите свои данные.
3. Просто создать нового пользователя недостаточно. Необходимо назначить для него права доступа. Чтобы назначить вновь созданном пользователю неограниченные права доступа к базе данных, выполните следующую команду:
GRANT ALL PRIVILEGES ON * . * TO 'имя пользователя'@'localhost';
Для того, чтоб изменения вошли в силу запустите команду обновления:
FLUSH PRIVILEGES;
На этом создание нового пользователя окончено. Новый пользователь получил те же права доступа в базе данных, что и пользователь root.
Все пользователи хранятся в базе данных «mysql» таблице user. Давайте проверим добавился наш новый пользователь в таблицу. Для это необходимо ввести команды:
use mysql; // выбераем нужную БД select user, host from user; // выводим все данные таблицы user
После этого появится вся информация из таблицы, и наш новый пользователь должен там находиться.
Чтобы запустить командную строку под новым пользователем необходимо зайти в интерфейс программы MySQL Workbench и создать новое подключение:
Вводим все данные нового пользователя:
После создания нового подключения нажимаем на него правой кнопкой мыши и запускаем командную строку:
2. Назначить специальные права доступа для пользователя MySQL
Для безопасности ваших файлов в БД MySQL лучше предоставлять разные уровни доступа для разных пользователей. MySQL позволяет сделать это легко и быстро, выполнив следующую команду:
GRANT [тип прав] ON [имя базы данных].[имя таблицы] TO ‘non-root’@'localhost’;
Нужно заменить значение «тип прав» на тот вид прав доступа, который вы хотите предоставить новому пользователю. Также вам нужно указать базу данных и имена таблиц, доступ к которым предоставляется. В MySQL есть несколько типов прав доступа, некоторые из них описаны ниже:
CREATE – Позволяет пользователям создавать базы данных/таблицы;
SELECT – Позволяет пользователям делать выборку данных;
INSERT – Позволяет пользователям добавлять новые записи в таблицы;
UPDATE – Позволяет пользователям изменять существующие записи в таблицах;
DELETE – Позволяет пользователям удалять записи из таблиц;
DROP – Позволяет пользователям удалять записи в базе данных/таблицах.
3. Удаление пользователя
Удалить существующего пользователя можно, используя команду:
DROP USER 'имя пользователя'@'localhost';
4. Смена пароля в MySQL
Для смены пароля пользователя можно воспользоваться следующими командами:
Версия 5.7.6 и более современная: ALTER USER 'имя пользователя'@'localhost' IDENTIFIED BY 'New_Password';
Версия 5.7.5 и древнее:
SET PASSWORD FOR 'имя пользователя'@'localhost' = PASSWORD('New_Password');
5. Удаление пароля
Если необходимо удалить пароль у пользователя, тогда нужно выполнить команду в консоли MySQL:
UPDATE mysql.user SET authentication_string=null WHERE User='имя пользователя'; FLUSH PRIVILEGES; exit;
После удаления пароля вход в консоль будет производится без пароля. В целях безопасности это не рекомендуется делать.
6. Добавление пароля
С помощью пункта 5 можно удалить пароль у конкретного пользователя, а с помощью этой команды можно обратно задать новый пароль для пользователя:
ALTER USER 'имя пользователя'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'пароль';
Видео:
От автора: базы данных MySQL известны своей безопасностью. Для того, чтобы получить права суперпользователя, необходимо ввести пароль, который был создан при установке. Но очень часто серверы с базами данных перепродаются, достаются в наследство или передаются любым другим способом. Одним их самых распространённых действий в MySQL, сброс пароля root, как раз и является. Сегодня мы расскажем о том, что такое рут-пасс, как поменять и что делать, если этот реквизит аутентификации вам неизвестен.
Что такое Рут-пароль
Если вы работали с Unix-подобными операционными системами, то термин «рут-права» вам знаком. Он значит, что пользователь получает полное управление над системой, может ее видоизменять с помощью программного кода, доустанавливать, обновлять пакеты и даже провести полную санацию ОС. В Windows тоже есть подобный режим работы, его принято называть administrator.
В Linux существует и альтернативный способ администрирования системы: чтобы не переходить к режиму superuser, можно воспользоваться командой sudo. Именно так устанавливается программное обеспечение и настраивается конфигурация операционки. К сожалению, подобного «промежуточного» режима нет в MySQL и, чтобы сменить password в базах данных, нам придется рутироваться. Это не то же самое, что рут-права в оси: все настройки происходят благодаря root в MySQL.
При установке программного обеспечения для базы данных новички часто допускают ошибки. Одной из тех, которая касается темы нашей статьи, является сеттинг слишком сложного кодового слова, либо небрежность при создании. После, разработчик сталкивается с тем, что абсолютно не помнит рут-пасса и не может произвести базовых конфигурационных действий.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
Стандартные привилегии
Это одни из первых шагов при установке СУБД: приоритеты доступа обозначаются еще после запуска команды mysql_install_db. Инициализируются таблицы безопасности, которые обозначают стандартный порядок доступа к режиму суперпользователя. Одной из составляющих является наличие root и пароля к нему.
Как только установка MySQL завершена, получить права суперпользователя может каждый, кто подойдет к терминалу: достаточно лишь ввести нужную команду. Дело в том, что изначально в таблицах безопасности нет пасса для root, если только пользователь не задал его в процессе установки.
Тем не менее, задать пароль пользователя необходимо. Ваши базы данных – это вся информация, которая обеспечивает работу программного обеспечения, веб-приложения или другого продукта, который вы создаете. Это можно сделать через графический интерфейс MySQL Workbench либо через командную строку, что предпочтительней. Наиболее опытные предпочитают даже не строку, а непосредственно таблицы безопасности. Это немного сложнее и не стоит того, если ваша работа не связана с ними в дальнейшем. Результат не изменится в зависимости от способа.
Заменить рут-пасс
Если вам известен пароль, то смена не создаст трудностей. Напротив, это можно сделать в несколько команд из строки.
Для начала, через безопасную оболочку Shell нужно подключится к серверу, который значится, как виртуальный. Далее, необходимо получить root права для работы с правами суперпользователя. Выглядит это так:
Только если вы еще вовсе не работали с базами данных, эта команда может быть для вас неизвестной. Нажав Enter, вы получите поле для ввода действующего кодового слова. Помните, сейчас мы не рассматриваем ситуацию, когда пользователь может зайти без пароля, либо последний утерян.
Итак, вы теперь имеете рут-права в MySQL. Для того, чтобы изменить пароль, нужно ввести следующий набор команд:
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
|
use mysql; update user set password=PASSWORD(«mynewpassword») where User=‘root’; flush privileges; quit |
Фраза «новый пароль» – заменяет тот пасс, который вы придумаете. Как видите, все даже проще, чем через любой графический интерфейс.
Все по новой
Теперь рассмотрим сценарий, когда вы получили базу данных, а root-прав к ней не имеете, как и верного пасса. Многие пользователи ищут, как узнать пароль с помощью серфинга различных системных файлов. Срабатывает логика о том, что пароль должен где-то храниться. Но это тщетно: только сбросом и назначением нового кодового слова можно возобновить рут-права.
Для начала, необходимо остановить сервер. Сделайте это с помощью команды:
|
# mysqladmin –uroot –pqwerty shutdown |
То же самое можно сделать и через графический интерфейс Workbench, но мы не ищем легких путей. Теперь нужно отключить таблицы безопасности, которые были созданы при установке. Делаем это при помощи команды:
|
sudo mysqld_safe —skip-grant-tables & |
Так, вы сможете заходить в рут без пароля и выполнять сброс командой, которая очень похожа на смену:
|
mysql> update user set password=PASSWORD(‘NEW-PASSWORD-HERE’) where User=‘John’; mysql> flush privileges; mysql>exit |
После того, как у вас появился новый рут-пасс, не забудьте снова включить таблицы безопасности, ведь однажды, они могут спасти ваш продукт от атаки.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
MongoDB
Посмотрите видео по MongoDB!
Смотреть
В этом руководстве мы покажем вам, как изменить пароль пользователя MySQL. Инструкции должны работать с любым современным дистрибутивом Linux, таким как Ubuntu 18.04 и CentOS 7.
Подготовка
В зависимости от версии сервера MySQL или MariaDB, которую вы используете в своей системе, вам нужно будет использовать разные команды для изменения пароля пользователя.
Чтобы узнать версию сервера базы данных, введите следующую команду:
mysql --version
Если в вашей системе установлен MySQL, результат будет выглядеть примерно так:
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
Или выведите такой вывод для MariaDB:
mysql Ver 15.1 Distrib 10.1.33-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Обязательно отметьте, какую версию MySQL или MariaDB вы используете. Если вы хотите получить список всех учетных записей пользователей MySQL, ознакомьтесь с этим руководством.
Как изменить пароль пользователя MySQL
Выполните следующие действия, чтобы изменить пароль пользователя MySQL:
1. Войдите в оболочку MySQL как root.
Войдите в оболочку MySQL, набрав следующую команду и при появлении запроса введите пароль root-пользователя MySQL:
mysql -u root -p
Если вы не установили пароль для пользователя root MySQL, вы можете войти в систему с помощью sudo mysql .
2. Установите пароль пользователя MySQL.
-
Введите следующие команды, если у вас MySQL 5.7.6 и новее или MariaDB 10.1.20 и новее:
ALTER USER 'user-name'@'localhost' IDENTIFIED BY 'NEW_USER_PASSWORD';FLUSH PRIVILEGES;Если инструкция
ALTER USERвас не работает, вы можете напрямую изменить пользовательскую таблицу:UPDATE mysql.user SET authentication_string = PASSWORD('NEW_USER_PASSWORD')WHERE User = 'user-name' AND Host = 'localhost';FLUSH PRIVILEGES; -
Введите следующие команды, если у вас MySQL 5.7.5 и ранее или MariaDB 10.1.20 и ранее:
SET PASSWORD FOR 'user-name'@'localhost' = PASSWORD('NEW_USER_PASSWORD');FLUSH PRIVILEGES;
Убедитесь, что вы изменили user-name на имя пользователя, для которого хотите изменить пароль. Если пользователь подключается к серверу MySQL с другого хоста, измените localhost на удаленное имя хоста или IP-адрес.
В обоих случаях, если все пойдет хорошо, вы увидите следующий результат:
Query OK, 0 rows affected (0.00 sec)
Выйдите из командной строки MySQL, выполнив:
quit;
3. Подтвердите новый пароль.
Чтобы убедиться, что новый пароль применен правильно, введите:
mysql -u user-name -h localhost -p
Вам будет предложено ввести новый пароль пользователя. Введите его, и вы войдете на свой сервер MySQL.
Выводы
В этом руководстве вы узнали, как изменить пароль пользователя MySQL или MariaDB. Убедитесь, что новый пароль надежный и надежный, и храните его в надежном месте.
Чтобы узнать больше о том, как использовать оболочку MySQL для выполнения различных административных операций, вы можете ознакомиться с нашим руководством по управлению учетными записями пользователей и базами данных MySQL .
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
- Содержание статьи
- Как поменять пароль root в MySQL
- Если пароль root ИЗВЕСТЕН
- Если пароль root НЕ ИЗВЕСТЕН
- Комментарии к статье ( 8 шт )
- Добавить комментарий
- Как поменять пароль root в MySQL
Довольно часто происходит такая ситуация, что пароль для учетной записи root в MySQL необходимо восстановить, поменять или сбросить. Хорошо, если он известен, но бывают случаи, когда пароль был утерян или неизвестен с самого начала. В данной статье пойдет речь о том, как этот пароль восстановить, имея доступ к серверу, на котором запущен mysql-server для обоих случаев, когда пароль о учетной записи root ИЗВЕСТЕН и НЕ ИЗВЕСТЕН.
Как поменять пароль root в MySQL
Если пароль root ИЗВЕСТЕН
Возьмем самую простую ситуацию, когда пароль от учетной записи root вам известен и все что нужно сделать, это просто его поменять. Чтобы задать новый пароль для учетной записи root, необходимо проделать следующие действия:
В том случае, если вы пользуетесь каким-либо веб-интерфейсом, например, phpMyAdmin, то тогда вы можете пропустить пункт 1 и сразу же выполнить запрос для нужной версии MySQL (пункт 2) прямо из интерфейса phpMyAdmin (вкладка SQL).
1) Подключаемся в консоль MySQL сервера с правами root (не забываем ввести пароль, после появления соответствующего запроса):
mysql -u root -p
2) Меняем пароль для пользователя root:
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8…)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW_PASSWORD';
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3…)
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NEW_PASSWORD');
NEW_PASSWORD — это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
Query OK, 0 rows affected (0.01 sec)
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
UPDATE mysql.user SET authentication_string=PASSWORD('NEW_PASSWORD'), plugin='mysql_native_password' WHERE User='root';
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
3) Перезагружаем привилегии, чтобы изменения вступили в силу:
flush privileges;
4) Для выхода из консоли MySQL сервера выполняем команду выхода:
exit;
После этого, пароль должен поменяться.
Если пароль root НЕ ИЗВЕСТЕН
Если вы не знаете текущий пароль root (потеряли, забыли) в MySQL, то придется пойти чуть более сложным путем, чем описанные действия выше:
1) Останавливаем mysqld:
sudo service mysql stop
2) Проверяем, что нет запущенных процессов mysqld:
ps -eaf|grep mysqld
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
root 24902 1530 0 11:41 pts/0 00:00:00 grep --color=auto mysqld
3) Создаем каталог /var/run/mysqld для запуска mysqld в safe режиме из консоли
sudo mkdir /var/run/mysqld
4) Делаем владельцем данного каталога пользователя mysql (чтобы не было проблем с правами)
sudo chown mysql /var/run/mysqld
5) Запускаем MySQL в ручном режиме из консоли, пропуская проверку прав (опция —skip-grant-tables). А также отключаем доступ к серверу через и —skip-networking), чтобы злоумышленник не мог воспользоваться тем, что мы отключили проверку прав пользователей. При использовании данной опции, доступ к серверу становится возможным только через localhost.
sudo mysqld_safe --skip-grant-tables --skip-networking &
В случае успешного запуска, вывод в консоли должен быть примерно таким:
# sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 26152
2019-05-02T14:17:14.807620Z mysqld_safe Logging to syslog.
2019-05-02T14:17:14.815041Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2019-05-02T14:17:14.856418Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
6) Подключаемся из консоли к серверу mysqld и выбираем базу данных mysql:
mysql -u root mysql
7) Используем плагин mysql_native_password, иначе в некоторых случаях будем получать ошибку «ERROR 1524 (HY000): Plugin ‘auth_socket’ is not loaded«, а нам это не нужно:
update user set plugin="mysql_native_password";
Вывод в результате выполнения данной команды должен быть примерно таким:
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4 Changed: 0 Warnings: 0

flush privileges;
9) Меняем пароль для нужного пользователя, в нашем случае это root:
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8…)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW_PASSWORD';
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3…)
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NEW_PASSWORD');
NEW_PASSWORD — это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
Query OK, 0 rows affected (0.01 sec)
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
UPDATE mysql.user SET authentication_string=PASSWORD('NEW_PASSWORD'), plugin='mysql_native_password' WHERE User='root';
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
9) После чего, вводим команду exit для отключения:
exit;
10) Выключаем запущенный в ручном режиме Mysqld сервер:
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
Если все пройдет успешно, то вывод должен быть примерно таким:
2019-05-02T14:30:03.404615Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done sudo mysqld_safe --skip-grant-tables --skip-networking
Если же команда не сработала и вы получаете вот такую (или любую другую) ошибку:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
То можно принудительно завершить процесс с помощью следующей команды:
sudo kill `cat /var/run/mysqld/mysqld.pid`
11) Проверяем, что нет запущенных процессов mysqld:
ps -eaf|grep mysqld
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
root 24902 1530 0 11:41 pts/0 00:00:00 grep --color=auto mysqld
12) Запускаем Mysql-server в нормальном режиме:
sudo service mysql start
И пытаемся подключиться к нашему серверу с новым паролем, который мы установили.
Одной из важных операций при работе с пользователями в СУБД MySQL является смена пароля пользователя. Как правило изменить пароль пользователя может только суперпользователь с именем root. Однако если обычный пользователь наделен полномочиями на смену пароля то он также может это сделать.
В данной статье будет рассмотрено как изменить пароль пользователя MySQL в операционной системе Ubuntu 20.04.
Для смены пароля пользователя в MySQL присутствует несколько способов, в частности, это смена пароля при помощи команды SET PASSWORD или ALTER USER. Далее в статье будут рассмотрены все 2 способа.
Шаг 1. Как узнать версию MySQL
На данный момент (Февраль 2022 года) MySQL поддерживает две основные версии. Первая это устаревшая, но все еще поддерживая версия 5.7 и последняя актуальная версия 8.0. Для того чтобы узнать используемую версию необходимо выполнить следующую команду в терминале:
mysql --version
В данном случае используется версия 8.0.28. Инструкция ALTER USER доступна только в современных версиях MySQL. Если у вас версия 5.x.x. то в ней следует использовать SET PASSWORD. В более новых версиях можно применять обе инструкции.
Шаг 2. Вход в консоль MySQL
Для того чтобы попасть в консоль MySQL необходимо авторизоваться при помощи логина и пароля. Если на сервере уже зарегистрирован необходимый пользователь, то вход необходимо выполнять от имени этого пользователя. Если MySQL используется впервые после установки, то входить необходимо при помощи пользователя root. Команда входа под пользователем root выглядит следующим образом (где вместо пользователя root можно использовать имя необходимого пользователя):
mysql -u root -p
Далее программа запросит пароль. В целях безопасности пароль не отображается в терминале. После ввода пароля необходимо нажать на клавишу Enter. После этого отобразится интерфейс консольного клиента MySQL, где можно использовать SQL команды.
Шаг 3. Просмотр хостов пользователя
В MySQL у каждой учетной записи есть свой хост, к которому данная учетная запись привязана. Есть 3 основных типа хостов в MySQL: localhost, % и IP адрес/доменное имя.
Тип записи localhost означает что под учетной записью можно входить только локально без возможности удаленного подключения, символ % (процент) означает что использовать такую учетную запись можно с любых хостов (в том числе и удаленных), IP адрес/доменное имя означает что использовать учетную запись можно только на выбранном доменном имени/IP адресе. Для того чтобы узнать тип хоста учетной записи необходимо выполнить следующий SQL запрос:
SELECT user, host FROM mysql.user;
На данном снимке экрана видно, что для пользователя alex используется хост %. Соответственно, этот хост и надо использовать при смене пароля. Пользователи в MySQL и вся информация о пользователях хранятся в базе данных mysql в таблице user.
Шаг 4. Смена пароля пользователя при помощи SET PASSWORD
Если требуется изменить пароль для пользователя root воспользуйтесь статьей Сброс пароля root в MySQL. Сменить пароль пользователя MySQL можно при помощи команды SET PASSWORD. Для того чтобы сменить пароль для пользователя alex с хостом % на somepassword666 выполните такую команду:
SET PASSWORD FOR 'alex'@'%' = 'somepassword666';
Шаг 5. Смена пароля пользователя при помощи ALTER USER
Также установить пароль пользователя можно при помощи команды ALTER USER. Для того чтобы поменять пароль для пользователя alex с хостом % на anotherpassword666 выполните SQL запрос:
ALTER USER 'alex'@'%' IDENTIFIED BY 'anotherpassword666';
Обратите внимание что имя пользователя и хост пользователя заключены в одинарные кавычки, без этих кавычек MySQL не сможет распознать строку.
Шаг 6. Сброс кэша привилегий
Вне зависимости от того какая команда была выполнена для смены пароля, после изменения пароля необходимо сбросить кэш привилегий. Сделать это можно, выполнив команду:
FLUSH PRIVILEGES;
Шаг 7. Проверка нового пароля
После того как пароль был изменен и кэш привилегий сброшен, необходимо проверить вход от имени пользователя чей пароль был изменен. Для этого необходимо выйти из оболочки MySQL выполнив команду exit:
exit
Далее необходимо войти в оболочку MySQL под необходимым пользователем ведя его новый пароль. Для примера войдем под пользователем alex, чей пароль был изменен ранее:
mysql -u alex -p
Если после ввода пароля появилось приглашение к вводу MySQL, то это означает что пароль был успешно обновлен.
Выводы
Теперь вы знаете как выполняется смена пароля пользователя MySQL. Изменить пароль можно несколькими способами. Оба способа являются простыми и быстрыми. А каким способом предпочитаете пользоваться вы? Поделитесь об этом в комментариях!
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Бывший системный администратор и DevOps инженер. Ныне работаю по направлению DevSecOps. Использую Linux более 5 лет. Помимо Linux интересую языком программирования Python, базами данных и языком SQL а также информационной безопасностью.
Введение
Доступы к серверам и сервисам нужно тщательно хранить, никому их не передавать и не терять. Но иногда случаются ситуации, когда пароли все-таки теряются или после смены их забывают записать, восстановить такой пароль тоже нет возможности. Если вы забыли пароль от root-пользователя MySQL — не отчаивайтесь, пароль root в MySQL легко сменить.
Важно понимать, что у вас должны быть права администратора на том сервере, где установлен MySQL-сервер. Это может быть либо root-пользователь напрямую, либо доступ через sudo.
Все описанные ниже действия нужно выполнять именно на этом сервере, то есть удаленно сменить пароль от root-пользователя не удастся.
Возможности MySQL в «Облачных базах данных»
Подробнее
Самый простой способ для последних версий
В версиях MySQL, начиная с 5.7, можно логиниться в MySQL от root-пользователя без пароля, если системный пользователь тоже root. Это позволяет подключиться к MySQL как root-пользователь без ввода пароля, а потом изменить его. Это возможно если для пользователя root используется плагин аутентификации auth_socket.
Выполните команду:
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
Теперь мы можем залогиниться под учетной записью root без ввода пароля. Для этого нам даже не нужно быть root или использовать sudo:
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
Все, мы перезапустили 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-доступ к базе данных.
Общая информация
Сбросить пароль root пользователю базы данных MySQL может потребоваться в случае, если потерян доступ к системе управления базами данных.
Требования для сброса пароля
- Локальный доступ или подключение по SSH к серверу на Ubuntu Linux.
- Предустановленная система СУБД MySQL с отсутствующим доступом.
План сброса
- Определение версии MySQL.
- Остановка сервера.
- Отключение привилегий MySQL сервера.
- Изменение пароля Root пользователя MySQL.
- Восстановление привилегий и запуск MySQL.
- Проверка нового пароля.
Определение версии MySQL
Стоит сразу определить установленную версию MySQL, поскольку на разных версиях программы, команды, в дальнейшем, могут отличаться.
Для определения версии MySQL в терминале достаточно ввести команду:
mysql --version
Должен появится похожий вывод:
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
Строку можно сохранить в текстовом документе, чтобы не забыть версию MySQL.
Остановка сервера
Для отключения привилегий нужно остановить сервер MySQL, введя в терминале команду:
sudo systemctl stop mysql
После выполнения команды процесс сервера MySQL будет приостановлен.
Отключение привилегий MySQL сервера
Отключение привилегий СУБД – исключение из процесса загрузки Grant-таблиц, которые хранят данные для авторизации пользователей (пароли и логины). Это позволит выполнить вход в MySQL без авторизации и восстановить пароль root по умолчанию.
Для начала создаётся конфигурационный файл, который изменяет параметры запуска MySQL. Для этого нужно ввести в терминале команду:
sudo systemctl edit mysql
В созданный текстовой файл нужно внести следующие строки, которые ограничат загрузку Grant-таблиц и запретят выход в сеть (для обеспечения безопасности):
[Service] ExecStart= ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid --skip-grant-tables --skip-networking
Для сохранения изменений в файле нужно нажать «CTRL+X», потом «Y» и подтвердить изменения нажатием «Enter».
Для применения изменений в процессе загрузки MySQL, нужно обновить конфигурацию Systemd командой:
sudo systemctl daemon-reload
Остаётся запустить сервер MySQL с отключенными привилегиями. Для этого в терминале вводится команда:
sudo systemctl start mysql
Изменение пароля root пользователя MySQL
Таблицы привилегий отключены и ничего не мешает выполнить вход в консоль MySQL от имени root пользователя без авторизации.
Для выполнения входа в консоль MySQL нужно ввести команду:
sudo mysql -u root
Авторизация должна пройти без введения пароля.
Для того чтобы сменить пароль пользователя root, нужно загрузить Grant-таблицы, введя команду в терминал MySQL:
FLUSH PRIVILEGES;
Изменение пароля для MySQL 5.7.6 и новее
Смена пароля root пользователя в консоли MySQL выполняется последовательным введением следующих команд:
UPDATE mysql.user SET authentication_string = PASSWORD('MY_NEW_PASSWORD')
WHERE User = 'root';
FLUSH PRIVILEGES;
Вместо «MY_NEW_PASSWORD» вводится собственный пароль. Не стоит забывать о безопасности и ставить лёгкие пароли, так как это сыграет на руку злоумышленникам.
Изменения пароля на MySQL 5.7.5 и позднее
Нужно последовательно ввести следующие команды:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MY_NEW_PASSWORD');
FLUSH PRIVILEGES;
В поле «MY_NEW_PASSWORD» вводится собственный пароль.
Завершение
В случае успеха, в обоих случаях, будет получен следующий вывод:
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
Восстановление привилегий и запуск сервера MySQL
После изменения пароля необходимо восстановить параметры загрузки сервера MySQL, удалив конфигурацию Systemd. Для этого в терминале последовательно вводятся команды:
sudo systemctl revert mysql sudo systemctl daemon-reload
Далее необходимо перезапустить сервер MySQL со стандартными параметрами. Перезагрузка выполняется следующей командой:
sudo systemctl restart mysql
Проверка нового пароля
Проверить новый пароль можно, выполнив вход в консоль MySQL от имени root пользователя:
mysql -u root -p
Как изменить пароль пользователя на новых версиях MySQL
В последних выпусках MySQL была добавлена возможность входа без пароля, если системная учётная запись имеет root доступ.
Чтобы узнать пароль на новых версиях, достаточно в терминале ввести команду, которая запустит MySQL с правами администратора:
sudo mysql
При получении ошибки «access denied» стоит переходить к описанному выше способу – «Сброс пароля root».
Если доступ к консоли получен успешно получен, можно выполнить сброс пароля root в Ubuntu для MySQL, последовательно вводя следующие команды:
UPDATE mysql.user SET authentication_string = PASSWORD('new_password')
WHERE user = 'root';
В поле «new_password» вводится новый пароль для пользователя root.
Для применения изменений нужно перезагрузить таблицы привилегий следующей командой:
FLUSH PRIVILEGES;
В случае успеха будет получен следующий вывод:
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0

















