Как найти пароль в базе данных

I lost my MySQL username and password. How do I retrieve it?

lemon's user avatar

lemon

13.1k5 gold badges18 silver badges35 bronze badges

asked Aug 7, 2008 at 3:54

Marcel's user avatar

Stop the MySQL process.

Start the MySQL process with the –skip-grant-tables option.

Start the MySQL console client with the -u root option.

List all the users;

SELECT * FROM mysql.user;

Reset password;

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

But DO NOT FORGET to

Stop the MySQL process

Start the MySQL Process normally (i.e. without the –skip-grant-tables option)

when you are finished. Otherwise, your database’s security could be compromised.

Community's user avatar

answered Aug 7, 2008 at 4:02

Xenph Yan's user avatar

Xenph YanXenph Yan

82.7k16 gold badges47 silver badges55 bronze badges

8

Unfortunately your user password is irretrievable. It has been hashed with a one way hash which if you don’t know is irreversible. I recommend go with Xenph Yan above and just create an new one.

You can also use the following procedure from the manual for resetting the password for any MySQL root accounts on Windows:

  1. Log on to your system as Administrator.
  2. Stop the MySQL server if it is running. For a server that is running as a Windows service, go to
    the Services manager:

Start Menu -> Control Panel -> Administrative Tools -> Services

Then find the MySQL service in the list, and stop it. If your server is
not running as a service, you may need to use the Task Manager to force it to stop.

  1. Create a text file and place the following statements in it. Replace the password with the password that you want to use.

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

    The UPDATE and FLUSH statements each must be written on a single line. The UPDATE statement resets the password for all existing root accounts, and the FLUSH statement tells the server to reload the grant tables into memory.

  2. Save the file. For this example, the file will be named C:mysql-init.txt.
  3. Open a console window to get to the command prompt:

    Start Menu -> Run -> cmd

  4. Start the MySQL server with the special –init-file option:

    C:> C:mysqlbinmysqld-nt --init-file = C:mysql-init.txt
    

    If you installed MySQL to a location other than C:mysql, adjust the command accordingly.

    The server executes the contents of the file named by the –init-file option at startup, changing each root account password.

    You can also add the –console option to the command if you want server output to appear in the console window rather than in a log file.

    If you installed MySQL using the MySQL Installation Wizard, you may need to specify a –defaults-file option:

    C:> "C:Program FilesMySQLMySQL Server 5.0binmysqld-nt.exe" --defaults-file="C:Program FilesMySQLMySQL Server 5.0my.ini" --init-file=C:mysql-init.txt
    

    The appropriate –defaults-file setting can be found using the Services Manager:

    Start Menu -> Control Panel -> Administrative Tools -> Services

    Find the MySQL service in the list, right-click on it, and choose the Properties option. The Path to executable field contains the –defaults-file setting.

  5. After the server has started successfully, delete C:mysql-init.txt.
  6. Stop the MySQL server, then restart it in normal mode again. If you run the server as a service, start it from the Windows Services window. If you start the server manually, use whatever command you normally use.

You should now be able to connect to MySQL as root using the new password.

Monic's user avatar

Monic

7069 silver badges29 bronze badges

answered Aug 7, 2008 at 4:54

jake's user avatar

jakejake

1,4352 gold badges14 silver badges22 bronze badges

4

An improvement to the most useful answer here:

1] No need to restart the mysql server
2] Security concern for a MySQL server connected to a network

There is no need to restart the MySQL server.

use FLUSH PRIVILEGES; after the update mysql.user statement for password change.

The FLUSH statement tells the server to reload the grant tables into memory so that it notices the password change.

The --skip-grant-options enables anyone to connect without a password and with all privileges. Because this is insecure, you might want to

use –skip-grant-tables in conjunction with –skip-networking to prevent remote clients from connecting.

from: reference: resetting-permissions-generic

answered Nov 10, 2011 at 10:47

ThinkingMonkey's user avatar

ThinkingMonkeyThinkingMonkey

12.5k13 gold badges56 silver badges81 bronze badges

1

Do it without down time

Run following command in the Terminal to connect to the DBMS (you need root access):

sudo mysql -u root -p;

run update password of the target user (for my example username is mousavi and it’s password must be 123456):

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

at this point you need to do a flush to apply changes:

FLUSH PRIVILEGES;

Done! You did it without any stop or restart mysql service.

answered Mar 10, 2018 at 10:00

S.M.Mousavi's user avatar

S.M.MousaviS.M.Mousavi

4,9037 gold badges44 silver badges58 bronze badges

While you can’t directly recover a MySQL password without bruteforcing, there might be another way – if you’ve used MySQL Workbench to connect to the database, and have saved the credentials to the “vault”, you’re golden.

On Windows, the credentials are stored in %APPDATA%MySQLWorkbenchworkbench_user_data.dat – encrypted with CryptProtectData (without any additional entropy). Decrypting is easy 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;
}

Or you can check out this DonationCoder thread for source + executable of a quick-and-dirty implementation.

Markus Safar's user avatar

Markus Safar

6,2835 gold badges28 silver badges44 bronze badges

answered Nov 3, 2015 at 18:47

snemarch's user avatar

snemarchsnemarch

4,95826 silver badges38 bronze badges

3

If you have root access to the server where mysql is running you should stop the mysql server using this command

sudo service mysql stop

Now start mysql using this command

sudo /usr/sbin/mysqld --skip-grant-tables  --skip-networking &

Now you can login to mysql using

sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Full instructions can be found here http://www.techmatterz.com/recover-mysql-root-password/

answered Jan 22, 2016 at 11:36

Sajjad Ashraf's user avatar

Sajjad AshrafSajjad Ashraf

3,7341 gold badge34 silver badges35 bronze badges

Login MySql from windows cmd using existing user:

mysql -u username -p
Enter password:****

Then run the following command:

mysql> SELECT * FROM mysql.user;

After that copy encrypted md5 password for corresponding user and there are several online password decrypted application available in web. Using this decrypt password and use this for login in next time.
or update user password using flowing command:

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

Then login using the new password and user.

Markus Safar's user avatar

Markus Safar

6,2835 gold badges28 silver badges44 bronze badges

answered Dec 2, 2014 at 8:25

Syeful Islam's user avatar

Syeful IslamSyeful Islam

3,7751 gold badge19 silver badges19 bronze badges

After MySQL 5.7.6 and MariaDB 10.1.20 (currently in 2022) you can:

Update a mysql user password having access to root user

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

Update mysql root user

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

List all users

select user from mysql.user;

Vega's user avatar

Vega

27.6k27 gold badges94 silver badges101 bronze badges

answered Jul 3, 2022 at 11:14

Raikish's user avatar

RaikishRaikish

6142 gold badges6 silver badges20 bronze badges

IF you happen to have ODBC set up, you can get the password from the ODBC config file. This is in /etc/odbc.ini for Linux and in the Software/ODBC folder in the registry in Windows (there are several – it may take some hunting)

answered Oct 30, 2017 at 15:04

samplesize1's user avatar

Save the file. For this example, the file will be named C:mysql-init.txt.
it asking administrative permisions for saving the file

answered Oct 23, 2019 at 5:19

user12261119's user avatar

Although a strict, logical, computer science’ish interpretation of the op’s question would be to require both “How do I retrieve my MySQL username” and “password” – I thought It might be useful to someone to also address the OR interpretation. In other words …

1) How do I retrieve my MySQL username?

OR

2) password

This latter condition seems to have been amply addressed already so I won’t bother with it. The following is a solution for the case “How do i retreive my MySQL username” alone. HIH.

To find your mysql username run the following commands from the mysql shell …

SELECT User FROM mysql.user;

it will print a table of all mysql users.

answered Jun 4, 2015 at 22:49

shine's user avatar

shineshine

172 bronze badges

1

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

От автора: вы куда полезли через ограду, гражданин! На заборе написали пароль, чтоб не забыть. Так может вы с этой стороны написали? Да нет – это не мой написан. Ну, удачных поисков, а всем остальным я расскажу, как узнать пароль MySQL, не перелезая через чужие заборы.

Нет ничего проще!

Если у вас есть элементарные знания и навыки обращения с СУБД MySQL, и (главное) учетная запись администратора, то узнать пароли всех пользователей можно в два счета. Для этого можно использовать как программные оболочки, так и команды SQL.

Что представляет собой сервер СУБД? Это обычная база данных, содержащая в себе всю нужную для работы MySQL информацию. Здесь хранятся все настройки сервера, баз, сведения о плагинах, дате и времени, пользовательские учетные записи, их привилегиях и паролях. В контексте данной статьи нас интересует значения последних.

Чтобы узнать пароль MySQL, нужно зайти на сервер под своей учеткой администратора. Затем открыть системную базу данных с именем «mysql» и сделать выборку значений из таблицы user. Для наглядности все интересующие сведения (значения паролей) мы получим с помощью php MyAdmin.

Откроем системную БД, и посмотрим на содержимое нужной нам таблицы «сблизи»: в одном из ее столбцов прописаны все пароли. Как видите, ничего сложного и для этого нам понадобилось всего несколько минут. Но что это такое? Кто «стибрил» из таблицы понятные значения паролей и заменил их какой-то «абракадаброй»!

Спокойствие, и только спокойствие! Никто ничего «не стибрил», просто в таблице указываются уже хешированные пароли. А что у вас глаза такие удивленные? Сейчас все разложим «по полочкам».

Как происходит шифрование в MySQL

Дело в том, что данная СУБД использует собственный алгоритм шифрования паролей. Точнее, не шифрования, а хеширования. Из-за этого пока никто не придумал способа, как расшифровать пароли в MySQL.

Существуют различные алгоритмы хеширования, но если при этом будет использоваться криптографическая толь, то шансов получить значение пароля сводится почти к 0. Криптографическая соль – это дополнительная строка, которая присоединяется к первоначальному значению. В результате на выходе (после хеширования) получается почти «невзламываемый» пароль.

Для установки пароля СУБД использует функцию PASSWORD(). Она не возвращает значения, которое было послано ей на обработку. Поэтому использовать данную функцию для получения «читаемого» пароля не получится. Единственное, что можно сделать – это получить хешированную строку по первоначальному значению. Синтаксис запроса:

SELECT PASSWORD(‘значение_пароля’);

Это же значение можно найти в системной таблице user (служебная база данных mysql), куда заносятся все учетные записи пользователей СУБД и хешированные значения паролей.

Путем перебора (если знать хотя бы примерную структуру значения) можно попытаться вспомнить забытый пароль. Но восстановить таким образом полностью неизвестное значение практически невозможно. Помните, что все описанные выше операции производятся под учетной записью администратора (root).

Использование обратимого шифрования

Узнать пароль MySQL, заданный системой по умолчанию для учетных записей сервера не удастся. Но это можно реализовать на уровне баз данных или даже таблиц. Многие движки и CMS, работающие на основе MySQL, имеют собственную (встроенную) систему аутентификации.

Например, если открыть таблицу БД WordPress, где движок сохраняет все данные о пользователях, то в столбце user_pass вы увидите такую же «абракадабру», как и в системной базе MySQL. Это говорит о том, что данная CMS также использует один из алгоритмов необратимого шифрования паролей (md5).

Но можно реализовать схему аутентификации на основе обратимых методов шифрования. Этим и займемся. Не будем сегодня огорчать себя «черным» цветом, и все запросы SQL выполним не через командную строку, а в phpMyAdmin. Для экспериментов я воспользуюсь тестовой БД «db1», в которой хранится одна таблица со «зверюшками» (animal). Добавим новую таблицу с именами хозяев зверей и паролем для входа в их «клетки» 🙂

Запустите программу, слева в списке выберите нужную БД. После этого перейдите во вкладку SQL и запустите на выполнение следующий код:

CREATE TABLE user_animal (id MEDIUMINT NOT NULL AUTO_INCREMENT,

name CHAR(15) NOT NULL, pasword BLOB NOT NULL, PRIMARY KEY (id));

Теперь перед тем, как узнать пароль MySQL, давайте заполним созданную таблицу данными. Для этого мы снова используем запросы SQL, как поступают настоящие разработчики. Код запроса:

INSERT INTO user_animal (`name`,`pasword`) VALUES (‘holms’,‘dog’);

Меняя значения в скобках после оператора VALUES, добавьте в таблицу еще несколько строк. Теперь сделаем из нее выборку данных:

SELECT * FROM user_animal;

Вообще-то непорядок получается! Значение паролей всех пользователей видны «как на ладони». Сейчас мы их слегка «хешанем» с помощью встроенной функции AES_ENCRYPT. Она принимает 2 параметра: столбец для хеширования и значение «соли»:

UPDATE user_animal SET pasword=AES_ENCRYPT(pasword,‘animal’);

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

Как видите, одни «блобы» получились вместо паролей. Это говорит о том, что значения надежно хешированы, и без «соли» взломать их практически невозможно. Но мы с вами знаем, в чем «соль». Сейчас я вам покажу, как узнать пароли к базе данных MySQL, точнее вернуть их в более «читаемом» виде. Для этого используется другая функция — AES_DECRYPT(). Код запроса с ее «участием»:

SELECT AES_DECRYPT( pasword,  ‘animal’ ) FROM user_animal;

Результаты этой выборки:

Как видите, чтобы узнать пароль MySQL, нужно правильно понимать, в чем «соль» проблемы. А если лазить по чужим заборам, то можно запросто получить заряд соли (из ружья) в то место, на которое не стоит лишний раз искать приключений. Лучше это время потратить на изучение MySQL.

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


  • Вопрос задан

    более трёх лет назад

  • 19802 просмотра

в консоли:
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, на случай, если нужно напакостить конкретному Васе

Пригласить эксперта

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

mysqladmin -u ПОЛЬЗОВАТЕЛЬ -p'ТЕКУЩИЙ_ПАРОЛЬ' password 'НОВЫЙ_ПАРОЛЬ'

Для рута можно выполнить эти запросы к БД (как заметно предыдущий пароль пользователя не требуется)

mysql> use mysql;
mysql> update user set password=PASSWORD("НОВЫЙ_ПАРОЛЬ") where user='ПОЛЬЗОВАТЕЛЬ' and host='localhost';
mysql> flush privileges;


  • Показать ещё
    Загружается…

21 мая 2023, в 16:11

5000 руб./за проект

21 мая 2023, в 15:30

1500 руб./за проект

21 мая 2023, в 15:24

25000 руб./за проект

Минуточку внимания

In this article, we will see how to find the Username & Password of PhpMyAdmin in Windows. PhpMyAdmin is a free and open-source administration database management tool for MySQL and MariaDB.

Sometimes, we forget the username and password that we set during registration. As the problem is without the username and password, we cannot connect to the database, and without connecting to the database, we cannot create the applications. Here, we will see how to easily retrieve the username and password of the phpMyAdmin in a step-wise manner.

Steps for finding the Username and Password of PhpMyAdmin: Here is the stepwise solution that will be followed as such to retrieve the credentials.

Step 1: Press Ctrl+R and type C:xamppphpMyAdmin (or) Navigate to that directory.

Run window

Go to C:xamppphpMyAdmin or the place where it is installed. (Generally, this is the default location)

Step 2: Inside the phpMyAdmin directory, locate the config.inc.php file. Filename: config.inc Extension: .php

screenshot-1

Here, use Searchbox and type “config.inc.php ” (or) locate it manually.

screenshot-2

Step 3: Inside the config.inc PHP file, go to this part where the “Authentication type and info” Comment is there. You can use Ctrl+F or the Search option to find it. You will see the Arrays of Arrays containing the required information.

You can open the PHP file in inbuilt-notepad or any text editor, like VS Code.

$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

Screenshot

Here the password is "" empty, username is root.

Now, we can use this username and password to access the databases and create the application successfully.

Last Updated :
09 Dec, 2022

Like Article

Save Article

The password is encrypted according to the documentation:

The password is always stored encrypted in the system catalogs. The
ENCRYPTED keyword has no effect, but is accepted for backwards
compatibility. The method of encryption is determined by the
configuration parameter password_encryption. If the presented password
string is already in MD5-encrypted or SCRAM-encrypted format, then it
is stored as-is regardless of password_encryption (since the system
cannot decrypt the specified encrypted password string, to encrypt it
in a different format). This allows reloading of encrypted passwords
during dump/restore.

So, you won’t be able to get the original password of the normal user. What’s stored in the system is an encryption (e.g. MD5) of the original password. If you already know the password, its encrypted value will match. But you cannot get the password that generated the encrypted value. That’s the point of encrypting the password.

As admin, you can ALTER the user’s password, but cannot get the password from the encrypted version.

— Update —

To get the encryptedvalue of the password for the user test, you can do:

SELECT * FROM pg_authid WHERE rolname='test';

For example:

SELECT rolname, rolpassword FROM pg_authid where rolname='test';

generates:

test | SCRAM-SHA-256$4096:O4JqOPBA9uDbytmsgvzcdA==$LN5pfo59nHr19nTDb1LX+21JK/UgQZoWDTFP8Tw2z3E=:Ciq8DY2pz8I2BxGGV2sq3VE6i1E30en0OdDD94Jlij4=

Source

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