Как изменить (сбросить) 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). А также отключаем доступ к серверу через TCP/IP (с помощью опци и —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
8) Перезагружаем привилегии:
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
Как изменить root пароль для MySQL
После того, как пароль root пользователя [1] MySQL установлен, его можно изменить. Наиболее простой способ следующий:
- Подключиться по SSH к виртуальному серверу;
- Подключиться к MySQL как пользователь root при помощи команды:
mysql –u root –p
- Затем нажать Enter, указать пароль и снова нажать Enter;
- Выполнить следующие команды:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); quit
После этого пароль будет изменён на newpass.
Данный способ также подходит и для изменений паролей других MySQL пользователей. Для этого в вышеуказанной команде необходимо указать пользователя, для которого меняется пароль (например, вместо root@localhost – dovecot@localhost) и новый пароль.
Сброс root-пароля в случае его утери
Если mysql root-пароль был утерян, его можно сбросить следующим образом:
- Подключаемся к VPS с правами root.
- Останавливаем mysql-сервер.
На Debian/Ubuntu для остановки mysql-сервера используется команда
/etc/init.d/mysql stop
service mysql stop
На CentOS/Fedora
/etc/init.d/mysqld stop
service mysqld stop
На CentOS 7
systemctl stop mariadb
- Далее выполняем команду:
mysqld_safe --skip-grant-tables &
- Результат выполнения команды будет примерно следующим:
[1] 5988 Starting mysqld daemon with databases from /var/lib/mysql mysqld_safe[6025]: started
- Подключаемся к mysql с правами root. Поскольку mysql запушен в безопасном режиме, пароль для входа не требуется:
mysql -u root
- Выбираем базу данных mysql:
use mysql;
- Устанавливаем новый mysql root-пароль командой:
update user set password=PASSWORD("новый_root_пароль") where User='root';
- Перезагружаем привилегии:
flush privileges;
- Отключаемся от mysql:
quit;
- Останавливаем и затем вновь запускаем сервер MySQL командами:
Debian/Ubuntu:
/etc/init.d/mysql stop /etc/init.d/mysql start
CentOS/Fedora
/etc/init.d/mysqld stop /etc/init.d/mysqld start
systemctl stop mariadb systemctl start mariadb
- Пробуем подключиться к mysql с новым установленным паролем:
mysql -u root –p
На этом процесс восстановления пароля завершен.
Примечания
- ↑Пароль root пользователя сервера и MySQL могут отличаться друг от друга
Как изменить пароль пользователя MySQL
В этом руководстве мы покажем вам, как изменить пароль пользователя 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;
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 .
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Как изменить пароль от phpMyAdmin
Изменить или сбросить пароль от пользователя phpMyAdmin можно:
- по SSH. Этот способ подойдет, если вы забыли пароль пользователя, под которым подключаетесь к phpMyAdmin.
- через интерфейс phpMyAdmin. Подойдет, если вы знаете пароль и вам нужно его сменить.
В статье мы расскажем про оба способа.
Для сброса пароля по SSH вам понадобится доступ к root-пользователю MySQL. Если вы потеряли root-доступ к серверу баз данных, воспользуйтесь инструкцией.
Учетная запись, под которой вы подключаетесь к phpMyAdmin, — это обычный пользователь mySQL. Ниже мы расскажем, как сменить забытый пароль от такой учётной записи.
Как поменять пароль phpMyAdmin по SSH
Подключитесь к серверу по SSH.
Подключитесь к серверу баз данных командой:
Mysql -uroot -p’password’
Вместо password напишите пароль от root-пользователя MySQL.
Узнайте версию MySQL при помощи команды:
Mysql --version
Используйте одну из команд в зависимости от версии MySQL: 5.7.6 и выше:
ALTER USER 'username' IDENTIFIED BY 'password';
5.7.5 и ниже:
SET PASSWORD FOR 'username'@'localhost' = PASSWORD('password');
Вместо username введите имя пользователя, вместо password введите ваш новый пароль.
Перезагрузите таблицы привилегий командой:
FLUSH PRIVILEGES;
Готово, вы сменили пароль от пользователя phpMyAdmin.
Как поменять пароль в phpMyAdmin
При помощи приложения можно поменять пароль как от учетной записи, под которой вы авторизованы, так и для других учетных записей MySQL.
Войдите в веб-интерфейс.

Нажмите Учетные записи пользователей:

Напротив нужного имени нажмите Редактировать привилегии:

Вверху страницы нажмите Изменить пароль:
Введите пароль и подтвердите его, затем нажмите Вперед: !](https://img.reg.ru/faq/20210504-kak-izmenit-parol-ot-phpmyadmin-4.png «[Установка нового пароля для пользователя в phpMyAdmin»)
Готово, пароль от учетной записи изменен.
Стандартные доступы phpMyAdmin
На облачных серверах Рег.ру с шаблонами LEMP и LAMP phpMyAdmin устанавливается автоматически. При подключении к такому серверу по SSH вы увидите приветственное окно с доступами:

phpMyAdmin default password
Помогла ли вам статья?
Спасибо за оценку. Рады помочь