Bagaimana cara melarikan diri! kata sandi?


24

Bagaimana orang bisa lolos dari tanda seru dengan kata sandi:

$ mysql -umyuser -pone_@&!two
-bash: !two: event not found

Mencoba backslash yang jelas tidak membantu:

$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
name@domain.com [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)

Semua pencarian google saya menyarankan bahwa backslash akan membantu, tetapi tidak. Tidak ada cara untuk menggunakan kutipan seperti yang disarankan dalam pertanyaan ini . Baris tersebut akan digunakan dalam alias .bashrc. Jangan khawatir, nama pengguna dan kata sandi yang ditampilkan di sini adalah contoh saja dan tidak digunakan dalam produksi!


Anda selalu dapat menggunakan tanda kutip tunggal. untuk menggunakan tanda kutip tunggal "di dalam" string yang dikutip tunggal, coba:''\'
cas

6
BTW, menempatkan kata sandi pada baris perintah adalah risiko keamanan potensial pada sistem multi-pengguna. Sangat mudah untuk memeriksa argumen baris perintah dari setiap proses yang sedang berjalan. Gunakan file .my.cnf sebagai gantinya (ingatlah untuk chmod 600itu).
cas

oops. itu '\''bukan''\'
cas

Terima kasih, Craig. Sebenarnya, ini lebih aman daripada alternatif: mengirim salinan salinan kata sandi kepada semua orang yang kemudian akan menyimpan siapa yang tahu di mana. Saya pribadi lebih suka bahwa setiap dev memiliki /home/userpengguna sendiri dan mysql, tapi saya bukan pembuat keputusan dalam hal itu.
dotancohen

2
manajemen bijak dan
maha

Jawaban:


38

Gunakan tanda kutip tunggal di sekitar kata sandi seperti ini: -p'one_@&!two'

Untuk memasukkannya ke alias, Anda akan melakukan sesuatu seperti:

alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''


1
tidak ada ruang antara -p dan kata sandi, tapi ya, ini seharusnya berfungsi
mulaz

sudah diedit ruang :)
cas

4
-bash: !two: command not found

Anda juga harus keluar dari &karakter:

$ mysql -umyuser -pone_@\&\!two

3

Jika Anda tidak pernah menggunakan! fitur sejarah, mungkin lebih mudah untuk menonaktifkannya (dengan set +Hdi bashrc Anda).


1

Anda dapat menyimpan kata sandi dalam variabel bash:

$ pass='one_@&!two'

Kemudian gantilah variabel dalam perintah:

$ mysql -umyuser -p$pass

jawaban yang menarik;)
chapskev
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.