在命令行中添加密码时,使用用户名/密码远程 mysql 登录不起作用

在命令行中添加密码时,使用用户名/密码远程 mysql 登录不起作用

我正在运行以下命令来连接到删除 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 历史文件的人也可以访问此密码。)

相关内容