Come scappare! nella password?


24

Come si può sfuggire al punto esclamativo in una password:

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

Provare l'ovvia barra rovesciata non ha aiutato:

$ 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)

Tutte le mie ricerche su Google suggeriscono che la barra rovesciata sarebbe di aiuto, ma non lo è. Non è possibile utilizzare le virgolette come suggerito in questa domanda . La linea verrà utilizzata in un alias .bashrc. Non preoccuparti, i nomi utente e le password mostrati qui sono solo esempi e non utilizzati in produzione!


puoi sempre usare virgolette singole. per usare una virgoletta "dentro" una stringa a virgoletta singola, prova:''\'
cas

6
A proposito, mettere la password sulla riga di comando è un potenziale rischio per la sicurezza di un sistema multiutente. È banalmente facile esaminare gli argomenti della riga di comando di qualsiasi processo in esecuzione. Utilizzare invece un file .my.cnf (ricordarsi di chmod 600esso).
CAS

oops. di quella '\'', non''\'
Cas

Grazie Craig. In realtà, questo è più sicuro dell'alternativa: inviare a tutti una copia della password che verrà archiviata e chissà dove. Personalmente preferirei che ogni sviluppatore avesse un suo /home/userutente e un utente mysql, ma non sono il decisore a tale riguardo.
dotancohen,

2
la gestione è saggia e onnisciente :)
Cas

Risposte:


38

Usa virgolette singole attorno alla password in questo modo: -p'one_@&!two'

Per dirla in un alias, dovresti fare qualcosa del tipo:

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


1
nessuno spazio tra -p e password, ma sì, questo dovrebbe funzionare
mulaz

già modificato lo spazio :)
Cas

4
-bash: !two: command not found

Devi anche sfuggire al &personaggio:

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

3

Se non usi mai il! funzioni di cronologia, potrebbe essere più conveniente semplicemente disabilitarle (con set +Hnel tuo bashrc).


1

È possibile memorizzare la password in una variabile bash:

$ pass='one_@&!two'

Quindi sostituire la variabile nel comando:

$ mysql -umyuser -p$pass

risposta interessante;)
chapskev
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.