Как мне получить имя пользователя и пароль MySQL? - PullRequest
145 голосов
/ 07 августа 2008

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

Ответы [ 10 ]

174 голосов
/ 07 августа 2008

Остановите процесс MySQL.

Запустите процесс MySQL с параметром --skip-grant-tables.

Запустите консольный клиент MySQL с опцией -u root.

Список всех пользователей;

SELECT * FROM mysql.user;

Сброс пароля;

UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

Но НЕ ЗАБЫВАЙТЕ

Остановить процесс MySQL

Запустите процесс MySQL как обычно (т.е. без опции --skip-grant-tables)

когда вы закончите. В противном случае безопасность вашей базы данных может быть нарушена.

38 голосов
/ 07 августа 2008

К сожалению, ваш пароль пользователя не подлежит возврату. Он был хеширован односторонним хешем, который, если вы не знаете, необратим. Я рекомендую перейти с Xenph Yan выше и просто создать новый.

Вы также можете использовать следующую процедуру из руководства для сброса пароля для любых учетных записей MySQL root в Windows:

  1. Войдите в систему как администратор.
  2. Остановите сервер MySQL, если он работает. Для сервера, работающего в качестве службы Windows, перейдите на Услуги менеджера:

Меню Пуск -> Панель управления -> Администрирование -> Службы

Затем найдите службу MySQL в списке и остановите ее. Если ваш сервер не работает как служба, вам может понадобиться использовать диспетчер задач, чтобы остановить его.

  1. Создайте текстовый файл и поместите в него следующие операторы. Замените пароль на пароль, который вы хотите использовать.

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;
    

    UPDATE и FLUSH операторы должны быть записаны в одну строку. Оператор UPDATE сбрасывает пароль для всех существующих корневых учетных записей, а оператор FLUSH сообщает серверу перезагрузить таблицы предоставления в память.

  2. Сохраните файл. В этом примере файл будет называться C: \ mysql-init.txt.
  3. Откройте окно консоли, чтобы перейти к командной строке:

    Меню Пуск -> Выполнить -> cmd

  4. Запустите сервер MySQL с помощью специальной опции - init-file :

    C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt
    

    Если вы установили MySQL в папку, отличную от C: \ mysql , измените команду соответствующим образом.

    Сервер выполняет содержимое файла, названного параметром - init-file при запуске, изменяя каждый root пароль учетной записи.

    Вы также можете добавить в команду параметр - console , если хотите, чтобы выходные данные сервера отображались в окне консоли, а не в файле журнала.

    Если вы установили MySQL с помощью мастера установки MySQL, вам может потребоваться указать параметр - defaults-file :

    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
    

    Соответствующий параметр - файл по умолчанию можно найти с помощью диспетчера служб:

    Меню Пуск -> Панель управления -> Администрирование -> Службы

    Найдите сервис MySQL в списке, щелкните его правой кнопкой мыши и выберите «Свойства». Поле «Путь к исполняемому файлу» содержит параметр - файл по умолчанию .

  5. После успешного запуска сервера удалите C: \ mysql-init.txt .
  6. Остановите сервер MySQL, затем перезапустите его в обычном режиме. Если вы запускаете сервер как службу, запустите его из окна Windows Services. Если вы запускаете сервер вручную, используйте любую команду, которую вы обычно используете.

Теперь вы сможете подключиться к MySQL с правами суперпользователя, используя новый пароль.

33 голосов
/ 10 ноября 2011

Улучшение наиболее полезного ответа здесь:

1] Нет необходимости перезапускать сервер MySQL
2] Проблема безопасности для сервера MySQL, подключенного к сети

Нет необходимости перезагружать сервер MySQL.

используйте FLUSH PRIVILEGES; после обновления оператора mysql.user для смены пароля.

Оператор FLUSH сообщает серверу перезагрузить таблицы предоставления в память, чтобы он заметил изменение пароля.

--skip-grant-options позволяет любому подключаться без пароля и со всеми привилегиями. Поскольку это небезопасно, вы можете захотеть

используйте - skip-grant-tables вместе с - skip-network для предотвращения подключения удаленных клиентов.

из: ссылка: универсальный сброс прав доступа

6 голосов
/ 03 ноября 2015

Хотя вы не можете напрямую восстановить пароль MySQL без брутфорсинга, возможно, существует другой способ - если вы использовали MySQL Workbench для подключения к базе данных и сохранили учетные данные в «хранилище», вы - золотой .

В Windows учетные данные хранятся в % APPDATA% \ MySQL \ Workbench \ workbench_user_data.dat - зашифрованы с помощью CryptProtectData (без какой-либо дополнительной энтропии). Расшифровка легко peasy:

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;
}

Или вы можете проверить этот поток DonationCoder для исходного кода + исполняемого файла быстрой и грязной реализации.

4 голосов
/ 22 января 2016

Если у вас есть 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/

3 голосов
/ 10 марта 2018

Сделай это без простоя

Запустите следующую команду в Терминале для подключения к СУБД (вам нужен root-доступ):

sudo mysql -u root -p;

запустите обновление пароля целевого пользователя (для моего примера имя пользователя mousavi, а его пароль должен быть 123456):

UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';  

на данный момент вам нужно сделать сброс, чтобы применить изменения:

FLUSH PRIVILEGES;

Готово! Вы сделали это без остановки или перезапуска службы MySQL.

2 голосов
/ 02 декабря 2014

Войдите в MySql из windows cmd, используя существующего пользователя:

mysql -u username -p
Введите пароль: ****

Затем выполните следующую команду:

mysql> SELECT * FROM mysql.user;

После этого скопируйте зашифрованный пароль md5 для соответствующего пользователя, и в Интернете будет доступно несколько приложений для расшифровки пароля. Используя этот расшифрованный пароль и используйте его для входа в следующий раз. или обновите пароль пользователя с помощью текущей команды:

mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

Затем войдите, используя новый пароль и пользователя.

0 голосов
/ 26 мая 2019

Для пользователя окна, вы можете следовать этому руководству для сброса пароля

0 голосов
/ 30 октября 2017

Если у вас настроен ODBC, вы можете получить пароль из файла конфигурации ODBC. Это находится в /etc/odbc.ini для Linux и в папке Software / ODBC в реестре Windows (их несколько - может потребоваться охота)

0 голосов
/ 05 июня 2015

Несмотря на то, что строгое, логичное, информатическое толкование вопроса оператора должно было бы потребовать оба"Как мне получить имя пользователя MySQL" * и"пароль" - я думал, что кому-то может быть полезно обратиться к интерпретации ИЛИ . Другими словами ...

1) Как мне получить имя пользователя MySQL?

OR

2) пароль

Это последнее условие, по-видимому, уже достаточно проработано, поэтому я не буду его беспокоить. Ниже приведено решение для случая «Как получить мое имя пользователя MySQL» в одиночку. Е.И.В..

Чтобы найти ваше имя пользователя mysql, выполните следующие команды из оболочки mysql ...

ВЫБЕРИТЕ пользователя ИЗ mysql.user;

распечатает таблицу всех пользователей mysql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...