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.