如何逃脱!密码?


23

一个人如何逃避密码中的感叹号:

$ 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别名中使用。不用担心,此处显示的用户名和密码仅是示例,不用于生产!


您可以始终使用单引号。要在单引号字符串中使用单引号,请尝试:''\'
cas 2012年

6
顺便说一句,在多用户系统上将密码放在命令行上是潜在的安全隐患。检查任何正在运行的进程的命令行参数非常容易。请改用.my.cnf文件(请记住chmod 600)。
cas 2012年

哎呀 那是'\'',不是''\'
cas

谢谢,克雷格。实际上,这比其他方法更安全:通过电子邮件向所有人发送密码副本,然后将密码存储在“谁知道哪里”。我个人更希望每个开发人员都有自己的/home/userMySQL用户,但我不是这方面的决策者。
dotancohen 2012年

2
管理是明智且无所不知的:)
cas

Answers:


36

在密码周围使用单引号,如下所示: -p'one_@&!two'

要将其放在别名中,您可以执行以下操作:

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


1
-p和密码之间没有空格,但是可以,这应该起作用
mulaz

已经删除了空间:)
cas

4
-bash: !two: command not found

您还需要转义&字符:

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


1

您可以将密码存储在bash变量中:

$ pass='one_@&!two'

然后在命令中替换变量:

$ mysql -umyuser -p$pass

有趣的答案;)
chapskev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.