Jak uciec! w haśle?


24

Jak można uciec od wykrzyknika w haśle:

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

Wypróbowanie oczywistego ukośnika odwrotnego nie pomogło:

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

Wszystkie moje wyszukiwania w Google sugerują, że odwrotny ukośnik pomógłby, ale tak nie jest. Nie ma sposobu na użycie cudzysłowów, jak sugerowano w tym pytaniu . Linia będzie używana w aliasie .bashrc. Nie martw się, nazwy użytkowników i hasła pokazane tutaj są tylko przykładami i nie są używane w produkcji!


zawsze możesz użyć pojedynczych cudzysłowów. aby użyć pojedynczego cudzysłowu „wewnątrz” ciągu jednego cudzysłowu, spróbuj:''\'
cas

6
BTW, umieszczenie hasła w wierszu poleceń stanowi potencjalne zagrożenie bezpieczeństwa w systemie z wieloma użytkownikami. Łatwo jest sprawdzić argumenty wiersza poleceń każdego uruchomionego procesu. Zamiast tego użyj pliku .my.cnf (pamiętaj o chmod 600tym).
cas

ups. to '\''nie''\'
cas

Dzięki Craig. W rzeczywistości jest to bezpieczniejsze niż alternatywa: wysyłanie pocztą e-mail kopii hasła, które następnie będzie przechowywać, kto wie, gdzie. Osobiście wolałbym, aby każdy deweloper miał własnego /home/useri mysql użytkownika, ale nie jestem decydentem w tym względzie.
dotancohen

2
zarządzanie jest mądre i wszechwiedzące :)
cas

Odpowiedzi:


38

Używaj pojedynczych cudzysłowów wokół hasła w ten sposób: -p'one_@&!two'

Aby umieścić to w aliasie, zrobiłbyś coś takiego:

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


1
nie ma spacji między -p a hasłem, ale tak, to powinno działać
mulaz

już edytowałem przestrzeń :)
cas

4
-bash: !two: command not found

Musisz także uciec od &postaci:

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

3

Jeśli nigdy nie użyjesz! funkcje historii, wygodniej może być po prostu je wyłączyć ( set +Hw swoim bashrc).


1

Możesz przechowywać hasło w zmiennej bash:

$ pass='one_@&!two'

Następnie podstaw zmienną w poleceniu:

$ mysql -umyuser -p$pass

ciekawa odpowiedź;)
czapskev
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.