Saya telah membuat pengguna ... tetapi lupa kata sandinya
mysql> buat pengguna 'blayo' @ '%' diidentifikasi oleh 'benar';
Alat baris perintah Linux mana yang dapat mengenkripsi kata sandi dengan cara yang sama dengan yang dilakukan mysql 5.5?
mysql> pilih Kata Sandi, Pengguna dari mysql.user ------------------------------------------ + ------- + * 920018161824B14A1067A69626595E68CB8284CB | blayo |
... untuk memastikan saya menggunakan yang benar
$ tool benar * 920018161824B14A1067A69626595E68CB8284CB
password
mysql
encryption
Philippe Blayo
sumber
sumber
blayo
? Itu pasti lebih cepat daripada menjalankan triliunan kombinasi karakter yang mungkin untuk menemukan yang tepat.Jawaban:
Nah, cara sepele (mungkin curang ) adalah dengan menjalankan:
Ini akan menghasilkan kata sandi menggunakan skema hashing kata sandi apa pun yang digunakan versi mysql Anda. [ EDIT : menambahkan -NB, yang menghilangkan nama kolom dan ascii table art.]
sumber
mysql
untuk menyembunyikannya dari bash history dan Anda dapat menggunakanSET sql_log_off=ON;
tepat sebelumSELECT ...
untuk menyembunyikannya dari log MySQL..mysql_history
) mengabaikan semua pernyataan yang cocok*PASSWORD*
dan 2. serveride untuk beberapa stmts (kecualiSELECT
). Lihat: MySQL 5.7 Manual - Kata Sandi dan Logging dan MySQL 5.7 - Manual - mysql Client LoggingBeberapa kalimat:
MySQL (mungkin mengharuskan Anda menambahkan -u (pengguna) -p):
Python :
Perl :
PHP :
Ruby :
Semua output:
sumber
Itu masih semacam pukulan pikiran saya bahwa MySQL tidak mengganggu mengaburkan kata sandi pada baris perintah dan dalam log. Dan itulah satu-satunya alasan saya menambahkan jawaban daripada hanya mengomentari jawaban @Gilles.
Jadi, tentu saja, Anda bisa masuk ke MySQL sebagai admin dan menetapkan kata sandi baru untuk pengguna blayo Anda, seperti yang disarankan @patrix.
Namun, cara standar untuk melakukannya adalah dengan menggunakan fungsi kata sandi MySQL (), yang menggunakan kata sandi plaintext sebagai argumen (serius?).
Jika Anda melakukannya, Anda meninggalkan versi plaintext dari kata sandi pengguna MySQL Anda duduk-duduk di bash history Anda dan di log MySQL Anda, untuk pengambilan yang mudah nanti oleh siapa pun yang mengelola untuk mendapatkan akses ke file log tersebut.
Bukankah lebih baik memiliki sedikit utilitas yang akan meminta kata sandi, tanpa menggema ke layar atau ke log Anda, lalu memberi Anda hash yang dihasilkan MySQL yang kompatibel?
Jadi, memodifikasi jawaban @ Gilles hanya sedikit, bagaimana dengan skrip shell kecil yang menggunakan Python, seperti berikut ini. Anda dapat dengan mudah memodifikasi ini untuk menjalankan pernyataan SQL terhadap database MySQL Anda untuk mengatur kata sandi sekaligus. Tetapi bahkan tanpa melangkah sejauh itu, cukup salin dan tempel hash yang dihasilkan ke dalam pernyataan SQL untuk memperbarui tabel pengguna:
sumber
<!-- language: lang-bsh -->
baris). Berguna! Saya suka itu. Terima kasih!Satu lagi menggunakan shell:
Penjelasan:
echo -n
mencetak tanpa linebreaksha1sum
SHA1 pertamaxxd -r -p
unhex hashsha1sum
SHA1 keduatr '[a-z]' '[A-Z]'
dikonversi ke huruf besarawk '{print "*" $1}'
tambahkan terkemuka *Keterangan lebih lanjut:
Antara 2. dan 3.
awk '{printf "%s", $1}'
langkah opsional bisa dilakukan untuk penghapusan baris baru dan tanda hubung. Tapi xxd akan mengabaikannya (Terima kasih kepada dave_thompson_085).Selanjutnya langkah 5 dan 6 dapat dilakukan sekaligus dengan menggantinya dengan
{print "*" toupper($1)}
(Terima kasih kepada dave_thompson_085).sumber
awk
dapat melakukan huruf besar, dan keluaran yang tidak lengkap (terakhir) baris ke terminal incovenient:.. | sha1sum | awk '{print "*" toupper($1)}'
. Dan Anda tidak perlu khawatir tentang NL dan bahkan tanda hubung padaxxd -r -p
, mereka diabaikan.Hash adalah sha1 (sha1 (kata sandi)) . Karena tidak ada garam (yang merupakan cacat keamanan kubur), Anda dapat melihat hash di dalam tabel .
Dengan hanya alat POSIX plus
sha1sum
dari GNU coreutils atau BusyBox, sha1 (sha1 (password)) menjengkelkan untuk dihitung karenasha1sum
perintah mencetak ringkasan dalam heksadesimal dan tidak ada alat standar untuk mengkonversi ke biner.Python memiliki intisari standar di pustaka standarnya, jadi ini adalah one-liner sederhana.
Atau dengan kata sandi di dalam liner:
sumber
read
shell builtin untuk membaca baris; jalankanstty echo
dulu jika Anda ingin mematikan gema danssty +echo
menyalakannya kembali. Dengan Python, Anda bisa menggunakangetpass
modul.Jika Anda membuat daftar pengguna dan lupa kata sandi, inilah yang harus Anda lakukan dan itu lebih mudah.
Ini juga terjadi pada saya belasan kali ketika saya melakukan 10 miliar hal sekaligus. Cara terbaik saya memulihkan kata sandi saya adalah:
menghentikan server mysql sepenuhnya terlebih dahulu
mengeluarkan mysqld_safe --skip-grant-tables &
kemudian saya login sebagai root tanpa mengeluarkan kata sandi, cukup mysql -u mysql-user (ini memungkinkan Anda masuk setelah mysqld_safe)
kemudian pergi ke tabel mysql> pengguna dan perbarui kata sandi untuk pengguna
kemudian kembali dan mulai ulang mysql
lihat apakah itu berhasil dan beri tahu kami.
sumber
Lain menggunakan shell
... yang keluaran:
sumber
MySQL 4.1+ menggunakan SHA1 ganda
Algoritma ini dapat dengan mudah dipindahkan ke bahasa lain. Perbedaannya adalah bahwa kata sandi hash dalam "pilih kata sandi" selalu dimulai dengan karakter "*".
sumber