Use aspas simples ao redor da senha assim: -p'one_@&!two'
Para colocá-lo em um alias, você faria algo como:
alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''
Como alguém pode escapar do ponto de exclamação em uma senha:
$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
Tentar a barra invertida óbvia não ajudou:
$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
[email protected] [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)
Todas as minhas pesquisas no Google sugerem que a barra invertida ajudaria, mas isso não acontece. Não há como usar aspas conforme sugerido em esta pergunta . A linha será usada em um alias .bashrc. Não se preocupe, os nomes de usuário e senhas mostrados aqui são apenas exemplos e não são usados na produção!
-bash: !two: command not found
Você também precisa escapar do caractere &
:
$ mysql -umyuser -pone_@\&\!two
Se você nunca usa o! características do histórico, pode ser mais conveniente simplesmente desativá-las (com set +H
em seu bashrc).
Você pode armazenar a senha em uma variável bash:
$ pass='one_@&!two'
Em seguida, substitua a variável no comando:
$ mysql -umyuser -p$pass