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
name@domain.com [~]# 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 não ajuda. Não há como usar aspas, conforme sugerido nesta 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 utilizados na produção!
''\'
chmod 600
dele).'\''
, não #''\'
/home/user
usuário e o mysql, mas não sou o responsável pela tomada de decisões nesse sentido.Respostas:
Use aspas simples ao redor da senha como esta:
-p'one_@&!two'
Para colocá-lo em um alias, você faria algo como:
alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''
fonte
Você também precisa escapar do
&
personagem:fonte
Se você nunca usar o! recursos de histórico, pode ser mais conveniente simplesmente desabilitá-los (com
set +H
no seu bashrc).fonte
Você pode armazenar a senha em uma variável bash:
Em seguida, substitua a variável no comando:
fonte