Как восстановить MySQL Root пароль
В данной статье рассмотрим способ восстановления MySQL root пароля, путём сброса старого и установки нового, в случае если старый пароль утерян или забыт. Забыли пароль MySQL root пользователя? Не беспокойтесь, его можно восстановить. Подключаясь к root пользователю MySQL без ввода пароля (так как он был сохранён ранее), рано или поздно можно столкнуться с сообщением о том, что в доступе отказано. MySQL требует ввода пароля, который пользователь не помнит.
Перейти к просмотру

Итак, в том случае если вы забыли пароль или ввели его неправильно, и получите сообщение о следующей ошибке:
# mysql -u root mysql
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

- Остановите MySQL сервер. Первое, что необходимо сделать в таком случае, остановить MySQL сервер. Сделайте это следующим способом:
- перейдите в папку с mysqladmin.exe:
# cd C:\Program Files\MySQL\MySQL Server 5.7\bin - Остановите MySQL сервер:
# mysqladmin –uroot –pqwerty shutdown
- перейдите в папку с mysqladmin.exe:

MySQL сервер также можно остановить из MySQL Workbench. Для этого перейдите в меню Startup / Shutdown и нажмите кнопку Stop Server.




Перейти к просмотру


Автор: Vladimir Mareev, Технический писатель
Владимир Мареев — автор и переводчик технических текстов в компании Hetman Software. Имеет тринадцатилетний опыт в области разработки программного обеспечения для восстановления данных, который помогает ему создавать понятные статьи для блога компании. Спектр публикаций довольно широк и не ограничивается только лишь темой программирования. Статьи включают также разнообразные обзоры новинок рынка компьютерных устройств, популярных операционных систем, руководства по использованию распространенных и специфических программ, примеры решений возникающих системных или аппаратных проблем и многие другие виды публикаций.

Редактор: Michael Miroshnichenko, Технический писатель
Мирошниченко Михаил – одни из ведущих программистов в Hetman Software. Опираясь на пятнадцатилетний опыт разработки программного обеспечения он делится своими знаниями с читателями нашего блога. По мимо программирования Михаил является экспертом в области восстановления данных, файловых систем, устройств хранения данных, RAID массивов.
- Обновлено:
- 8.11.2023 14:26
- На других языках:
- Украинский
- Метки:
- *.dbf файл
- Microsoft SQL Server восстановление
- MSSQL восстановление
- MySQL восстановление
- Oracle Database восстановление
- Пароль
Как изменить 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, запущенная на mysql server 5.33 (root-пароль от mysql-сервера есть). При запуске этого приложения спрашивается логин и пароль. Описания структуры БД разработчик не дает. Нужно сменить пароль от аккаунта БД, например, «Вася» — подскажите, какой запрос и через какое средство администрирования (mysql-administrator/navicat/etc) нужно составить, чтобы найти этот логин (покопавшись через mysql-administrator таблицы «login» я обнаружил, т.е. «Вася» это на 99% есть login) и сменить ему пароль?
- Вопрос задан более трёх лет назад
- 20860 просмотров
Комментировать
Решения вопроса 1
в консоли:
mysql -u root -p
вводим пароль от рута, далее
SELECT user, host, password FROM mysql.user WHERE user='Вася';
если есть чего, то пользователь «Вася» есть в БД, меняем ему пароль:
UPDATE mysql.user SET password=PASSWORD('Noviy Passw0Rd, ik') WHERE user='Вася' AND host='locahost';
в данном запросе, указан дополнительно host, на случай, если нужно напакостить конкретному Васе
Ответ написан более трёх лет назад
Нравится 2 16 комментариев
чуть было не забыл, апосля всех манипуляций, нужно сбросить полномочия, т.е. чтобы все ходили с новыми паролями, выполняем ещё один запрос:
flush privileges;

Diman89 @Diman89 Автор вопроса
Андрей Мохов:
mysql> SELECT user, 127.0.0.1, password FROM WHERE user=’Вася’;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near ‘.0.1,
password FROM BD_NAME WHERE user=’Вася’ at line 1
ЧЯДНТ?

Diman89 @Diman89 Автор вопроса
тостер, почему-то, сжирает часть поста — password from bd_name where
Я же написал нормальный запрос, начиная отсебятину лепить?

Diman89 @Diman89 Автор вопроса
Андрей Мохов:
mysql> SELECT user, host, password FROM mysql.user WHERE user=’Вася’;
Empty set (0.00 sec)
почему ищем в mysql, а не в нужной БД?
Diman89: вместо Вася нужно поставить имя пользователя, которому необходимо сменить пароль, если хотите посмотреть всех пользователей, то:
SELECT user, host, password FROM mysql.user;
почему ищем в mysql, а не в нужной БД?
потому что все пользователи хранятся в БД mysql в таблице user

Diman89 @Diman89 Автор вопроса
Андрей Мохов: я понял
вы меня не правильно понимаете: искомый юзер есть только в моей БД, а не в mysql, т.к. новые юзеры создаются приложением, которое работает только с моей БД
то, что вы мне говорите — это пользователи, которым разрешен доступ к БД, а не пользователи внутри самой нужной БД
надеюсь, выразился понятно
Diman89: в этом случае нужно знать каким образом хэшируется пароли пользователей, дайте нам структуру таблицы ваших пользователей и информацию о пользователе, которому следует изменить пароль.

Diman89 @Diman89 Автор вопроса
Андрей Мохов: в том то и дело, что структуры нет — разраб ее не дает, а я, простите, в этом ни бельмеса. на ум приходит только «глобальный поиск по всей БД». Знаю только, что при авторизации в приложении пользователи вводят имя пользователя и пароль (каждый свои), так имя пользователя хранится в поле «login»
зайдите в нужную БД, выполните запрос:
show tables;
посмотрите какие таблицы есть, наверняка будет с постфиксом user, затем выполните запрос:
show create table user\G
в данном запросе вместо user нужно поставить имя искомой таблицы. затем нужно получить информацию по конкретному пользователю:
SELECT * FROM user WHERE login=’Вася’\G
в данном запросе вместо user следует поставить имя найденной таблицы, вместо login — имя столбца, где теоретически может храниться имя пользователя, ну и вместо ‘Вася’ — логин искомого пользователя.
также можно посмотреть список всех пользователей:
SELECT * FROM user LIMIT 10\G
тут user — имя найденной таблицы, выборка ограничена 10 строками

Diman89 @Diman89 Автор вопроса
Андрей Мохов: а подскажите, у меня вывод «show tables» большой и я не могу посмотреть начало списка, прокрутки не хватает + при запросе «show create table Account\G» выводит «крякозябры» — видимо с кодировкой что-то не так? может мне через другое какое-то средство это выполнять? Таблицы user нет
имя таблицы нашли — уже хорошо, сделайте выборку нужного пользователя, изменить кодировку можно с помощью запроса (для utf8):
set names utf8;
или же (для windows-1251)
set names cp1251;
или же (для dos-866):
set names cp866;
скорее всего с одной из этих кодировок кракозябр не будет, нужно ставить ту кодировку, которая соответствует вашей консоли, скорее всего это будет cp866 (если консоль из windows запущена), для linux подойдет скорее всего с utf8, можно ещё для koi8r консоли сделать:
set names koi8r;

Diman89 @Diman89 Автор вопроса
Андрей Мохов: добился следующего (всего *.row — 6 записей, 2я — искомая)
*************************** 2. row ***************************
id: 170
createDatetime: 2010-01-28 09:05:25
createPerson_id: 1
modifyDatetime: 2013-06-03 16:24:19
modifyPerson_id: 170
deleted: 0
code: —
federalCode:
regionalCode:
lastName: Вася
firstName:
patrName:
post_id: 4
speciality_id: NULL
org_id: NULL
orgStructure_id: NULL
office:
office2:
tariffCategory_id: NULL
finance_id: NULL
retireDate: NULL
ambPlan: 0
ambPlan2: 0
ambNorm: 0
homPlan: 0
homPlan2: 0
homNorm: 0
expPlan: 0
expNorm: 0
login: Вася
password: 202cb962ac59075b964b07152d234b70
userProfile_id: 1
retired: 0
birthDate: 2010-01-28
birthPlace:
sex: 0
SNILS:
INN:
availableForExternal: 0
primaryQuota: 0
ownQuota: 0
consultancyQuota: 0
externalQuota: 0
lastAccessibleTimelineDate: NULL
timelineAccessibleDays: 0
typeTimeLinePerson: 0
academicdegree_id: NULL
academicTitle_id: NULL
uuid_id: 4123492
displayInTimeline: 1
maxOverQueue: 0
maxCito: 0
quotUnit: 0
Как сбросить пароль root MySQL или MariaDB в Windows
Пароль пользователя root спрашивается во время установки СУБД. Если установка делалась вручную, то есть без инстолятора, как это описано, например, в этой статье, то пароль может быть не установлен вовсе.
Если вы используете какие-то готовые сборки, которые включают в себя MySQL/MariaDB, то обратитесь за паролем на официальные сайты этих сборок. Также попробуйте такие учётные данные:
Если вы действительно забыли пароль 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.
Теперь, когда у вас имеется рут доступ, вы можете изменить пароль рута.
Простым способом смены пароля рута для современных версий MySQL является использование запроса ALTER USER. Тем не менее эта команда не будет работать прямо сейчас, поскольку таблицы привилегий не загружены. Давайте скажем серверу баз данных перегрузить таблицы привилегий введя команду:
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('новый_пароль');
Не забудьте поменять новый_пароль на выбранный вами новый пароль.
Примечание: если команда ALTER USER не работает, то это обычно является признаком более серьёзной проблемы. Тем не менее вместо этой вы можете попробовать UPDATE … SET для сброса root пароля:
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
то вам необходимо к команде запуска mysqld добавить флаг —shared-memory.
Связанные статьи:
- MariaDB для Windows (100%)
- Как обновить MySQL (100%)
- Как обновить MariaDB в Windows (100%)
- Как сделать резервную копию баз данных MySQL (MariaDB) в Windows без phpMyAdmin (100%)
- Как в phpMyAdmin поменять настройки экспорта по умолчанию (100%)
- Готовая сборка Apache для Windows XP (RANDOM — 70%)