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

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

12 ответов

Решение

Остановите процесс 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

from: reference: сброс-разрешения-универсальный

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

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

sudo mysql -u root -p;

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

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

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

FLUSH PRIVILEGES;

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

Хотя вы не можете напрямую восстановить пароль 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 для исходного + исполняемого файла быстрой и грязной реализации.

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

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

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

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

mysql> SELECT * FROM mysql.user;

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

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

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

После MySQL 5.7.6 и MariaDB 10.1.20 (в настоящее время в 2022 году) вы можете:

Обновите пароль пользователя mysql, имеющий доступ к пользователю root

      ALTER USER 'some_user_name'@'localhost' IDENTIFIED BY 'a_super_secure_password';

Обновите пользователя root mysql

      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';

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

      select user from mysql.user;

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

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

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

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

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

ИЛИ ЖЕ

2) пароль

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

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

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

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

Другие вопросы по тегам