Мне нужно изменить пароль почтового ящика учетной записи пользователя Postfix непосредственно в базе данных MySQL; однако я не имею представления об используемом формате.
Вот таблица:
SELECT username,password FROM mailbox LIMIT 1;
+------------------+------------------------------------+
| username | password |
+------------------+------------------------------------+
| [email protected] | $1$60Dgu9vc$T7vaQfTKgxUpci0TTnsyO0 |
+------------------+------------------------------------+
Какой это формат? Как его изменить?
решение1
В начале $1$
поля пароля есть подсказка, что это хеш MD5.
Чтобы зашифровать пароль в хэше MD5, можно использовать команду openssl passwd
.
passwd Генерация хешированных паролей.
и из openssl passwd --help
:
-1 Алгоритм паролей на основе MD5
-stdin считывает пароли со stdin
Итак, для генерации хеша MD5 приведем короткий пример на bash:
#/bin/bash
PASSWORD="test123"
MD5=`echo $PASSWORD | openssl passwd -1 -stdin`
Запустив его, вы получили на выходе предполагаемый зашифрованный пароль:
$1$EaYOC8n4$04LSDBtt4A8GPVRUkzBXG/
Таким образом, чтобы изменить пароль в базе данных MySQL на «test123», выполните в командной строке MySQL:
USE postfix UPDATE mailbox SET password="$1$EaYOC8n4$04LSDBtt4A8GPVRUkzBXG/" WHERE username="[email protected]";
Изменение вступит в силу немедленно, и пользователь заметит его при следующем доступе к почтовому ящику.