Как узнать пароль от mysql
Перейти к содержимому

Как узнать пароль от mysql

  • автор:

Как узнать пароль root пользователя для базы данных MySQL в Ubuntu?

Мне достался один VPS сервер, в наследство, так скажем. Бывший владелец не выходит на связь. Как мне узнать пароль root пользователя для базы данных MySQL? Где он храниться в файловой системе Ubuntu 14.04?

Отслеживать
68.2k 225 225 золотых знаков 80 80 серебряных знаков 223 223 бронзовых знака
задан 2 июн 2015 в 20:33

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

узнать пароль — естественно, никак (разве что бывший владелец записал его где-нибудь «для памяти»).

но можно установить свой собственный пароль. описано это в интернетах множество раз. повторю для истории:

$ sudo dpkg-reconfigure mysql-server-5.5 

цифры («5.5») в вашей системе могут отличаться. в дефолтной установке работает bash-completion , поэтому, набрав всю команду вплоть до mysql-server и нажав два раза tab , вы увидите, какая именно версия пакета mysql-server установлена в вашей системе.

если с автодополнением не вышло, можно узнать версию, например, так:

$ dpkg --get-selections | grep mysql-server- 

примерный вывод этой команды:

mysql-server-5.5 install mysql-server-core-5.5 install 

Сброс пароля root в MySQL

Доступы к серверам и сервисам нужно тщательно хранить, никому их не передавать и не терять. Но иногда случаются ситуации, когда пароли все-таки теряются или после смены их забывают записать, восстановить такой пароль тоже нет возможности. Если вы забыли пароль от 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-доступ к базе данных.

Создание нового пользователя и настройка прав в MySQL

ALTER TABLE — изменение таблицы в SQL

Зарегистрируйтесь в панели управления

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

как узнать пароль от mysql

Для того чтобы узнать пароль от базы данных MySQL, необходимо обратиться к администратору базы данных или к команде поддержки хостинг-провайдера, если база данных находится на удалённом сервере.

Если вы являетесь администратором базы данных MySQL и забыли пароль, существует несколько способов его восстановить:

  1. Использовать команду RESET PASSWORD для сброса пароля и создания нового. Это требует доступа к серверу базы данных и административных прав.
  2. Использовать команду SET PASSWORD для изменения пароля текущего пользователя. Это также требует административных прав.
  3. Если у вас есть доступ к файловой системе сервера, можно попробовать сбросить пароль через файл my.cnf или my.ini, где хранятся настройки сервера MySQL.
  4. Воспользоваться инструментом для управления базой данных, таким как phpMyAdmin, для сброса пароля пользователя.

Как найти и сменить пароль пользователя MySQL?

Есть приложение, работающее с БД MySQL, запущенная на mysql server 5.33 (root-пароль от mysql-сервера есть). При запуске этого приложения спрашивается логин и пароль. Описания структуры БД разработчик не дает. Нужно сменить пароль от аккаунта БД, например, «Вася» — подскажите, какой запрос и через какое средство администрирования (mysql-administrator/navicat/etc) нужно составить, чтобы найти этот логин (покопавшись через mysql-administrator таблицы «login» я обнаружил, т.е. «Вася» это на 99% есть login) и сменить ему пароль?

  • Вопрос задан более трёх лет назад
  • 21572 просмотра

Комментировать
Решения вопроса 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 @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 @Diman89 Автор вопроса
тостер, почему-то, сжирает часть поста — password from bd_name where
Я же написал нормальный запрос, начиная отсебятину лепить?

Diman89

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 @Diman89 Автор вопроса

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

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

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 @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 @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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *