Как можно избежать восклицательного знака в пароле:
$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
Попытка очевидного обратного слеша не помогла:
$ 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)
Все мои поиски в Google предполагают, что обратный слеш поможет, но это не так. Там нет никакого способа использовать кавычки, как предлагается в этом вопросе . Эта строка будет использоваться в псевдониме .bashrc. Не волнуйтесь, имена пользователей и пароли, показанные здесь, являются только примерами и не используются в производстве!
''\'
chmod 600
этом).'\''
, а не''\'
/home/user
пользователь и пользователь mysql, но я не принимаю решения в этом отношении.Ответы:
Используйте одинарные кавычки вокруг пароля, как это:
-p'one_@&!two'
Чтобы поместить его в псевдоним, вы должны сделать что-то вроде:
alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''
источник
Вам также нужно убежать от
&
персонажа:источник
Если вы никогда не используете! Особенности истории, может быть удобнее просто отключить их (с помощью
set +H
в вашем bashrc).источник
Вы можете сохранить пароль в переменной bash:
Затем подставьте переменную в команду:
источник