Я создал пользователя ... но забыл пароль
mysql> создать пользователя 'blayo' @ '%', идентифицированного как 'right';
Какой инструмент командной строки Linux может зашифровать пароль так же, как это делает MySQL 5.5?
mysql> выберите Пароль, Пользователь из mysql.user ------------------------------------------ + ------- + * 920018161824B14A1067A69626595E68CB8284CB | Блайо |
... чтобы убедиться, что я использую правильный
$ tool right * 920018161824B14A1067A69626595E68CB8284CB
password
mysql
encryption
Филипп Блайо
источник
источник
blayo
? Это определенно быстрее, чем проходить триллионы возможных комбинаций символов, чтобы найти правильную.Ответы:
Ну, тривиальный (возможно, обман ) способ - запустить:
Это создаст пароль, используя любую схему хэширования паролей, которую использует ваша версия mysql. [ РЕДАКТИРОВАТЬ : добавлен -NB, который избавляется от имен столбцов и таблицы ascii.]
источник
mysql
чтобы скрыть его из истории bash, и вы можете использоватьSET sql_log_off=ON;
прямо перед тем,SELECT ...
чтобы скрыть его из журнала MySQL..mysql_history
), игнорирующей все соответствующие операторы,*PASSWORD*
и 2. серверной стороне для несколько stmts (кромеSELECT
). См. Руководство по MySQL 5.7 - пароли и ведение журнала и MySQL 5.7 - руководство - ведение журнала клиента mysqlНесколько однострочников:
MySQL (может потребоваться добавить -u (пользователь) -p):
Python :
Perl :
PHP :
Рубин :
Весь вывод:
источник
Это все еще немного удивляет, что MySQL не мешает запутывать пароли в командной строке и в логах. И это единственная причина, по которой я добавляю ответ, а не просто комментирую ответ @Gilles.
Так что, конечно, вы можете просто войти в MySQL как администратор и установить новый пароль для вашего пользователя blayo, как предложено @patrix.
Однако стандартный способ сделать это - использовать функцию пароля MySQL (MySQL), которая в качестве аргумента принимает пароль в виде открытого текста (серьезно?).
Если вы сделаете это, вы оставите незашифрованную версию пароля вашего пользователя MySQL в своей истории Bash и в журналах MySQL, чтобы впоследствии ее можно было легко найти тому, кому удастся получить доступ к этим файлам журнала.
Разве не было бы лучше иметь небольшую утилиту, которая запрашивала бы пароль, не отражая его на экране или в ваших журналах, а затем предоставила бы вам полученный MySQL-совместимый хеш?
Итак, немного изменив ответ @ Gilles, как насчет небольшого сценария оболочки, использующего Python, как показано ниже. Вы можете легко изменить это, чтобы выполнить оператор SQL для вашей базы данных MySQL, чтобы установить пароль сразу. Но даже не заходя так далеко, просто скопируйте и вставьте полученный хеш в оператор SQL, чтобы обновить таблицу пользователей:
источник
<!-- language: lang-bsh -->
строку). Handy! Мне это нравится. Благодарность!Еще один с использованием оболочки:
Объяснение:
echo -n
печатать без перевода строкиsha1sum
первый SHA1xxd -r -p
распаковать хешsha1sum
второй SHA1tr '[a-z]' '[A-Z]'
преобразовать в верхний регистрawk '{print "*" $1}'
добавить ведущий *Больше деталей:
Между 2. и 3.
awk '{printf "%s", $1}'
может быть добавлен необязательный шаг для удаления новой строки и дефиса. Но xxd все равно будет их игнорировать (спасибо dave_thompson_085).Более того, шаги 5 и 6 можно выполнить сразу, заменив их
{print "*" toupper($1)}
(спасибо dave_thompson_085).источник
awk
может сделать заглавные буквы, и вывод неполной (последнюю) линии терминал incovenient:.. | sha1sum | awk '{print "*" toupper($1)}'
. И вам не нужно беспокоиться о NL и даже о дефисеxxd -r -p
, они игнорируются.Хеш - это sha1 (sha1 (пароль)) . Поскольку соли нет (что является серьезным недостатком безопасности), вы можете посмотреть хеш в таблице .
Только с инструментами POSIX плюс
sha1sum
из GNU coreutils или BusyBox sha1 (sha1 (пароль)) раздражает вычисления, потому чтоsha1sum
команда выводит дайджест в шестнадцатеричном формате, и нет стандартного инструмента для преобразования в двоичный файл.Python имеет стандартные дайджесты в своих стандартных библиотеках, поэтому он простой однострочный.
Или с паролем внутри одной строки:
источник
read
встроенную оболочку для чтения строки;stty echo
сначала запустите, если хотите отключить эхо иssty +echo
включить его снова. В Python вы можете использоватьgetpass
модуль.Если вы создали пользователя и забыли пароль, это то, что вы должны сделать, и это проще.
Это также случалось со мной дюжину раз, когда я делал 10 миллиардов вещей одновременно. Лучший способ восстановить мой пароль был:
остановил сервер MySQL полностью первым
выдал mysqld_safe --skip-grant-tables &
затем я вошел в систему как root без ввода пароля, просто mysql -u mysql-user (он позволяет войти после mysqld_safe)
затем перейдите в таблицу mysql> user и обновите пароль для пользователя
затем вернитесь и перезапустите MySQL
Посмотрим, сработает ли это, и дайте нам знать.
источник
Другой с помощью оболочки
... какие выводы:
источник
MySQL 4.1+ использует двойной SHA1
Этот алгоритм может быть легко перенесен на другие языки. Разница заключается в том, что хэши паролей в «выберите пароль» всегда начинаются с символа «*».
источник