Як отримати своє ім'я користувача та пароль MySQL?


158

Я втратив своє ім’я користувача та пароль MySQL. Як отримати його?

Відповіді:


186

Зупиніть процес MySQL.

Запустіть процес MySQL за допомогою параметра --skip-grant-table.

Запустіть клієнт консолі MySQL за допомогою параметра -u root.

Список усіх користувачів;

SELECT * FROM mysql.user;

Скинути пароль;

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

Але НЕ ЗАБУДЬТЕ до

Зупиніть процес MySQL

Запускайте процес MySQL нормально (тобто без параметра --skip-grant-table)

коли ви закінчите. В іншому випадку може бути порушена безпека вашої бази даних.


7
Подумайте, що вам не потрібно перезапускати демон для скидання нормальних користувачів. просто "ПЛАТИМ ПРИВІЛЕГИ;" після оновлення пароля користувача. --skip-grant-таблиці потрібні лише для скидання пароля користувача користувача! Це, як правило, не рекомендується для стандартного скидання користувача.
Амос Фоларін

Яке значення використання dpkg-reconfigure mysql-server-5.5команди для скидання кореневого пароля MySQL?
phillipsK

@Xenph, Чому ти кажеш " Запустити клієнтський консоль MySQL з кореневою опцією -u "? Немає сенсу робити це взагалі, як -uігнорується при запуску сервера --skip-grant-tables.
Pacerier

15
В MySQL 5.7. *, Ні стовпчика mysql.userназивається password, використовуйте authentication_stringзамість цього.
Адіб Аруй

3
Я знайшов це + stackoverflow.com/a/35277160/1604601 дуже корисним
Alien Life Form

42

На жаль, ваш пароль користувача є безповоротним. Він був хеширован одностороннім хешем, який, якщо ви не знаєте, є незворотним. Я рекомендую перейти з Ксенфом Яном вище і просто створити новий.

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

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

    Якщо ви встановили MySQL в інше місце, ніж C: \ mysql , відрегулюйте команду відповідно.

    Сервер виконує вміст файлу, названого --init-файлом при запуску, змінюючи кожен пароль кореневого облікового запису.

    Ви також можете додати --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-файл можна знайти за допомогою диспетчера сервісів:

    Меню Пуск -> Панель управління -> Адміністративні інструменти -> Послуги

    Знайдіть службу MySQL у списку, клацніть на ній правою кнопкою миші та оберіть опцію Властивості. Поле Шлях до виконуваного файлу містить --defaults-файл налаштування .

  5. Після успішного запуску сервера видаліть C: \ mysql-init.txt .
  6. Зупиніть сервер MySQL, а потім знову перезапустіть його у звичайному режимі. Якщо ви запускаєте сервер як послугу, запустіть його у вікні служб Windows. Якщо ви запускаєте сервер вручну, використовуйте будь-яку команду, яку ви зазвичай використовуєте.

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


5
@Jake - дякую за відповідь. Я хотів би зробити це великими пальцями, але чомусь stackoverflow не дозволить мені це зробити через точки репутації. ваше пояснення "на жаль, ваш користувальницький пароль незворотний. він був хеширован одностороннім хешем, який, якщо ви не знаєте, є незворотним", був ключем до мого розуміння, чому все інше, що я читав ТОЛЬКО в Google, дав мені вказівки змінити мій пароль. хороші пояснення більш проникливі, ніж самі інструкції.
dsdsdsdsd

1
@jake Я не можу знайти mysql у списку послуг. Скажіть, будь ласка, що мені робити?

1
Чому твоє mysqld-ntзамість mysqld?
Pacerier

Btw, чи є опція без файлів --init-file? (Щось подібне до --executeкоманди mysql.exe .)
Pacerier

34

Покращення найкориснішої відповіді тут:

1] Не потрібно перезапускати сервер mysql
2] Турбота про безпеку сервера MySQL, підключеного до мережі

Не потрібно перезапускати сервер MySQL.

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

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

--skip-grant-optionsДозволяє будь-якому з'єднуватися без пароля і з усіма привілеями. Оскільки це небезпечно, ви, можливо, захочете

використовувати --skip-grant-таблиці спільно з --skip-мережею, щоб запобігти підключенню віддалених клієнтів.

з: посилання: скидання-дозволу-загальне


@ThinkingMonkey, Чи не передбачає це, що поточний зареєстрований користувач має права змінювати mysql.user? Однак часто це не так.
Pacerier

6

Хоча ви не можете безпосередньо відновити пароль 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;
}

Або ви можете перевірити цей потік DonationCoder на джерело + виконуваний файл швидко-брудної реалізації.


2
Це було ідеально. У згаданому потоці snemarch є exe з вихідним кодом для отримання пароля мого облікового запису користувача, що зберігається в моєму сховищі MySQL Workbench. Хоча ці інші методи, ймовірно, також спрацювали, якби у мене були права читати або оновлювати таблицю користувачів.
RobbZ

Але відносно кажучи, дуже мало людей використовують Workbench.
Pacerier

Ось ще одна реалізація, яку можна запустити після побудови з Visual Studio для відновлення збереженої інформації про ім’я користувача та пароль Workbench
bnp887

6

Робіть це без простою часу

Виконайте наступну команду в Терміналі для підключення до СУБД (вам потрібен кореневий доступ):

sudo mysql -u root -p;

запустіть пароль оновлення цільового користувача (для мого прикладу є ім’я користувача, mousaviі він повинен бути паролем 123456):

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

в цей момент вам потрібно зробити флеш, щоб застосувати зміни:

FLUSH PRIVILEGES;

Готово! Ви зробили це без будь-якої зупинки та перезапуску служби mysql.


5

Якщо у вас є кореневий доступ до сервера, на якому працює 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

Увійти в MySql з Windows cmd за допомогою наявного користувача:

mysql -u ім'я користувача -p
Введіть пароль: ****

Потім запустіть таку команду:

mysql> SELECT * FROM mysql.user;

Після цього скопіюйте зашифрований пароль md5 для відповідного користувача, і в Інтернеті є декілька онлайн-програм, розшифрованих паролем. Використовуючи цей дешифруючий пароль і використовуйте його для входу в наступний раз. або оновити пароль користувача за допомогою поточної команди:

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

Потім увійдіть, використовуючи новий пароль та користувача.


0

Якщо у вас встановлено ODBC, ви можете отримати пароль з конфігураційного файлу ODBC. Це в /etc/odbc.ini для Linux і в папці Software / ODBC в реєстрі в Windows (їх декілька - це може зайняти деяке полювання)


0

Збережіть файл. У цьому прикладі файл буде названий C: \ mysql-init.txt. він запитує адміністративні дозволи на збереження файлу


-1

Хоча для суворої, логічної, інформатики, інтерпретації питання ОП було б вимагати як "Як отримати своє ім'я користувача MySQL", так і "пароль" - я подумав, що комусь може бути корисно також звернутися до АБО тлумачення . Іншими словами ...

1) Як отримати моє ім'я користувача MySQL?

АБО

2) пароль

Ця остання умова, здається, вже була досить чітко вирішена, тому я не буду це турбувати. Далі наведено рішення для випадку "Як я можу отримати своє ім'я користувача MySQL" самостійно. ВІХ.

Щоб знайти ваше ім'я користувача mysql, запустіть такі команди з оболонки mysql ...

ВИБІР користувача з mysql.user;

він надрукує таблицю всіх користувачів mysql.


1
Це пізня відповідь, і ви повинні розміщувати їх, лише якщо ваше рішення явно відрізняється від вже опублікованого чи прийнятого. Не в цьому випадку, тим більше, що ваша відповідь дублює прийняту.
m.cekiera
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.