사용자를 생성했지만...비밀번호를 잊어버렸습니다.
mysql> 'right'로 식별되는 'blayo'@'%' 사용자를 생성합니다.
어떤 Linux 명령줄 도구가비밀번호는 mysql 5.5와 동일하게 암호화됩니까?
mysql> mysql.user에서 비밀번호, 사용자를 선택하세요. -----------------------------+------ - + *920018161824B14A1067A69626595E68CB8284CB |블라요 |
...올바른 것을 사용하고 있는지 확인하세요
$ 도구 오른쪽 *920018161824B14A1067A69626595E68CB8284CB
답변1
일부 단문:
MySQL(-u(user) -p를 추가해야 할 수도 있습니다):
mysql -NBe "select password('right')"
파이썬:
python -c 'from hashlib import sha1; print "*" + sha1(sha1("right").digest()).hexdigest().upper()'
진주:
perl -MDigest::SHA1=sha1_hex -MDigest::SHA1=sha1 -le 'print "*". uc sha1_hex(sha1("right"))'
PHP:
php -r 'echo "*" . strtoupper(sha1(sha1("right", TRUE))). "\n";'
루비:
ruby -e 'require "digest/sha1"; puts "*" + Digest::SHA1.hexdigest(Digest::SHA1.digest("right")).upcase'
모든 출력:
*920018161824B14A1067A69626595E68CB8284CB
답변2
글쎄, 사소한 (어쩌면부정 행위) 방법은 다음을 실행하는 것입니다.
mysql -NBe "select password('right')"
이는 귀하의 mysql 버전이 사용하는 비밀번호 해싱 체계를 사용하여 비밀번호를 생성합니다. [편집하다: 열 이름과 ASCII 테이블 아트를 제거하는 -NB가 추가되었습니다. ]
답변3
쉘을 사용하는 또 다른 방법:
echo -n 'right' | sha1sum | xxd -r -p |\
sha1sum | tr '[a-z]' '[A-Z]' | awk '{printf "*%s", $1}'
설명하다:
echo -n
인쇄할 때 줄 바꿈 없음sha1sum
첫 번째 SHA1xxd -r -p
16진수 해싱 취소sha1sum
두 번째 SHA1tr '[a-z]' '[A-Z]'
대문자로 변환awk '{print "*" $1}'
선행 추가 *
자세한 내용은:
2.와 3. 사이에 awk '{printf "%s", $1}'
개행 문자와 하이픈을 제거하는 선택적 단계를 삽입할 수 있습니다. 그러나 xxd는 어쨌든 이를 무시합니다(dave_thompson_085 덕분에).
{print "*" toupper($1)}
또한 5단계와 6단계를 다음으로 대체하면 즉시 완료할 수 있습니다(dave_thompson_085 덕분에).
답변4
해시 값은 sha1(sha1(password)) 입니다.. 없기 때문에소금(이것은 심각한 보안 결함입니다)테이블에서 해시 값 찾기.
GNU coreutils 또는 BusyBox의 POSIX 도구와 sha1(sha1(password))을 사용하면 명령이 다이제스트를 16진수로 인쇄하고 바이너리로 변환할 수 있는 표준 도구가 없기 sha1sum
때문에 계산하기가 번거롭습니다 .sha1sum
awk "$(printf %s 'right' | sha1sum |
sed -e 's/ .*//' -e 's/../, 0x&/g' \
-e 's/^/BEGIN {printf "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c"/' \
-e 's/$/; exit}/')" | sha1sum
Python의 표준 라이브러리에는 표준 다이제스트가 있으므로 간단한 한 줄입니다.
printf %s 'right' |
python -c 'from hashlib import sha1; import sys; print sha1(sha1(sys.stdin.read()).digest()).hexdigest()'
또는 한 줄에 비밀번호를 입력하세요.
python -c 'from hashlib import sha1; print sha1(sha1("right").digest()).hexdigest()'