Я потерял имя пользователя и пароль MySQL. Как мне его получить?






Stop the MySQL process.
Start the MySQL process with the --skip-grant-tables option.
Start the MySQL console client with the -u root option.
Составьте список всех пользователей;
SELECT * FROM mysql.user;
Сброс пароля;
UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
Но НЕ ЗАБУДЬТЕ к
Stop the MySQL process
Start the MySQL Process normally (i.e. without the --skip-grant-tables option)
когда вы закончите. В противном случае безопасность вашей базы данных может быть поставлена под угрозу.
Каково значение использования команды dpkg-reconfigure mysql-server-5.5 для сброса пароля root MySQL?
@Xenph, почему ты говоришь "Запустите клиент консоли MySQL с параметром -u root"? В этом нет никакого смысла, поскольку -u игнорируется, когда сервер запускается с --skip-grant-tables.
В MySQL 5.7. * В mysql.user нет столбца с именем password, используйте вместо него authentication_string.
мой sql 5.5. команда select показывает зашифрованный пароль. как мне увидеть действительный пароль?
Я нашел этот + stackoverflow.com/a/35277160/1604601 очень полезным
Я получаю Unknown column 'Password' in 'field list' после сброса пароля.
К сожалению, ваш пароль пользователя невозможно восстановить. Он был хеширован односторонним хешем, который, если вы не знаете, является необратимым. Я рекомендую использовать Xenph Yan выше и просто создать новый.
Вы также можете использовать следующую процедуру из руководство для сброса пароля для любых учетных записей MySQL корень в Windows:
Start Menu -> Control Panel -> Administrative Tools -> Services
Затем найдите в списке службу MySQL и остановите ее. Если ваш сервер не работает как служба, вам может потребоваться использовать диспетчер задач, чтобы принудительно остановить ее.
Создайте текстовый файл и поместите в него следующие инструкции. Замените пароль тем паролем, который вы хотите использовать.
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Каждый из операторов ОБНОВИТЬ и РУМЯНЕЦ должен быть записан в одной строке. Оператор ОБНОВИТЬ сбрасывает пароль для всех существующих учетных записей root, а оператор РУМЯНЕЦ сообщает серверу перезагрузить таблицы предоставления в память.
Откройте окно консоли, чтобы перейти в командную строку:
Start Menu -> Run -> cmd
Запустите сервер MySQL со специальной опцией --init-файл:
C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt
Если вы установили MySQL в расположение, отличное от C: \ mysql, настройте команду соответствующим образом.
Сервер выполняет содержимое файла, названного параметром --init-файл, при запуске, изменяя пароль каждой учетной записи корень.
Вы также можете добавить в команду параметр --консоль, если хотите, чтобы выходные данные сервера отображались в окне консоли, а не в файле журнала.
Если вы установили MySQL с помощью мастера установки MySQL, вам может потребоваться указать параметр --defaults-файл:
C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file = "C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt
Соответствующий параметр --defaults-файл можно найти с помощью диспетчера служб:
Start Menu -> Control Panel -> Administrative Tools -> Services
Найдите службу MySQL в списке, щелкните ее правой кнопкой мыши и выберите параметр «Свойства». Поле «Путь к исполняемому файлу» содержит параметр --defaults-файл.
Теперь вы должны иметь возможность подключиться к MySQL как root, используя новый пароль.
@ Джейк - спасибо за ответ. Я хотел дать ему оценку, но по какой-то причине stackoverflow не позволяет мне это делать из-за очков репутации. ваше объяснение «к сожалению, ваш пароль пользователя невозможно восстановить. он был хеширован с помощью одностороннего хеша, который, если вы не знаете, является необратимым», было ключом к моему пониманию того, почему все остальное, что я читал в Google, ТОЛЬКО давало мне указания к изменять my пароль. хорошие объяснения более проницательны, чем одни инструкции.
@jake я не могу найти mysql в списке служб Подскажите, пожалуйста, что делать?
Почему у вас mysqld-nt вместо mysqld?
Улучшение наиболее полезного ответа здесь:
1] No need to restart the mysql server
2] Security concern for a MySQL server connected to a network
Нет необходимости перезапускать сервер MySQL.
используйте FLUSH PRIVILEGES; после инструкции update mysql.user для смены пароля.
The FLUSH statement tells the server to reload the grant tables into memory so that it notices the password change.
--skip-grant-options позволяет любому подключиться без пароля и со всеми привилегиями. Поскольку это небезопасно, вы можете захотеть
use --skip-grant-tables in conjunction with --skip-networking to prevent remote clients from connecting.
от: ссылка: сброс разрешений общий
@ThinkingMonkey, Разве это не предполагает, что текущий вошедший в систему пользователь имеет права на изменение mysql.user? Однако зачастую это не так.
Войдите в MySql из Windows cmd, используя существующего пользователя:
mysql -u username -p
Enter password:****
Затем выполните следующую команду:
mysql> SELECT * FROM mysql.user;
После этого скопируйте зашифрованный пароль md5 для соответствующего пользователя, и в сети будет доступно несколько онлайн-приложений с расшифровкой паролей. Используя этот пароль для расшифровки и используйте его для входа в следующий раз. или обновите пароль пользователя, используя текущую команду:
mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
Затем войдите, используя новый пароль и пользователя.
Хотя строгая, логическая, информативная интерпретация вопроса оператора будет требовать обе «Как мне получить мой пароль для имени пользователя MySQL» и «пароль» - я подумал, что кому-то может быть полезно также обратиться к интерпретации ИЛИ ЖЕ. Другими словами ...
1) Как мне получить свое имя пользователя MySQL?
ИЛИ ЖЕ
2) пароль
Это последнее условие, кажется, уже достаточно рассмотрено, поэтому я не буду беспокоиться о нем. Ниже приведено решение только для случая «Как восстановить мое имя пользователя MySQL». ПРИВЕТ.
Чтобы найти свое имя пользователя mysql, выполните следующие команды из оболочки mysql ...
ВЫБРАТЬ пользователя ИЗ mysql.user;
он распечатает таблицу всех пользователей mysql.
Это поздний ответ, и вы должны публиковать его только в том случае, если ваше решение явно отличается от уже опубликованного или принятого. Это не в этом случае, тем более, что ваш ответ дублирует принятый.
Хотя вы не можете напрямую восстановить пароль MySQL без перебора, может быть и другой способ - если вы использовали MySQL Workbench для подключения к базе данных и сохранили учетные данные в «хранилище», вы - золотая медаль.
В Windows учетные данные хранятся в % APPDATA% \ MySQL \ Workbench \ workbench_user_data.dat - зашифрованы с помощью CryptProtectData (без дополнительной энтропии). Расшифровать очень просто:
std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
DATA_BLOB inblob { length, input };
DATA_BLOB outblob;
if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
throw std::runtime_error("Couldn't decrypt");
}
std::vector<unsigned char> output(length);
memcpy(&output[0], outblob.pbData, outblob.cbData);
return output;
}
Или вы можете проверить этот ПожертвованиеCoder thread для исходного + исполняемого файла быстрой и грязной реализации.
Это было прекрасно. В упомянутом потоке snemarch есть exe с исходным кодом для получения пароля моей учетной записи, хранящегося в моем хранилище MySQL Workbench. Хотя эти другие методы, вероятно, тоже работали бы, если бы у меня были права на чтение или обновление пользовательской таблицы.
Но относительно говоря, очень мало людей используют Workbench.
Вот еще одна реализация, которую можно запустить после сборки с помощью Visual Studio для восстановления сохраненных в Workbench информации об имени пользователя и пароле: github.com/wclear/MySQLWorkbenchPasswordViewer
Если у вас есть root-доступ к серверу, на котором запущен mysql, вы должны остановить сервер mysql с помощью этой команды
sudo service mysql stop
Теперь запустите mysql с помощью этой команды
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
Теперь вы можете войти в mysql, используя
sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Полную инструкцию можно найти здесь http://www.techmatterz.com/recover-mysql-root-password/
Если у вас установлен ODBC, вы можете получить пароль из файла конфигурации ODBC. Это находится в /etc/odbc.ini для Linux и в папке Software / ODBC в реестре Windows (их несколько - может потребоваться некоторая охота)
Для подключения к СУБД выполните следующую команду в Терминале (необходим root-доступ):
sudo mysql -u root -p;
запустите пароль обновления целевого пользователя (для моего примера имя пользователя mousavi, а его пароль должен быть 123456):
UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';
на этом этапе вам нужно выполнить промывку, чтобы применить изменения:
FLUSH PRIVILEGES;
Выполнено! Вы сделали это без остановки или перезапуска службы mysql.
Сохраните файл. В этом примере файл будет называться C: \ mysql-init.txt. он запрашивает административные разрешения для сохранения файла
Думаю, вам не нужно перезапускать демон для сброса настроек обычных пользователей. просто "СМЫВАТЬ ПРИВИЛЕГИИ;" после обновления пароля пользователя. --skip-grant-tables требуется только для сброса пароля пользователя root! Обычно это не рекомендуется для стандартного пользовательского сброса.