我正在运行以下命令来连接到删除 mysql 服务器(它是自动连接的 bash 脚本的一部分)
mysql -h slave1 -u monitor -pvP!KnK4*
我在终端窗口中收到以下响应
-bash: !KnK4: event not found
当我运行时mysql -h slave1 -u monitor -p
没有在命令行中添加传递,并在提示输入密码时使用相同的密码,效果很好。
在这种情况下我做错了什么?
PS上面的密码不是真正的密码(它更长,只是为了堆栈交换而将其缩小)
答案1
如果您打算使用 shell 特有的字符(例如!
, *
)作为参数的一部分,则必须以这样的方式呈现它:在将其传递给您要执行的命令之前,shell 不会对其进行解释。调用。
而不是:
$ mysql -h slave1 -u monitor -pvP!KnK4*
而是使用:
$ mysql -h slave1 -u monitor -p'vP!KnK4*'
然后,当你有时间的时候,如果这是您的实际密码,请更改您的 MySQL 用户密码因为你把它放到了互联网上让所有人都可以看到。
(另外,您应该知道任何能够读取您用户的 shell 历史文件的人也可以访问此密码。)