mysql - 交互式 ssh 和 mysql 命令的 Bash 脚本

标签 mysql linux bash ssh

我在研究MySQL,每次都得学

  1. 输入ssh XXX@XXX命令,并输入我到学校服务器的密码。
  2. 输入mysql -u XXX -p命令,并输入MySQL密码。

我想创建一个 Bash 脚本来自动执行上述步骤。

我可以用这段代码完成第一步:

#!/usr/bin/expect -f    
set address xxx.com   
set password xxx  
set timeout 10   
spawn ssh xxx@$address   
expect {    "*yes/no" { send "yes\r"; exp_continue}    "*password:" { send "$password\r" }  }  
send clear\r 
interact

但是我不知道如何自动输入下一条命令(mysql -u xxx -p)和密码。

我该怎么做?

最佳答案

你不需要这么复杂的脚本来进入远程机器上的 MySQL 控制台。使用 ssh 工具的功能:

ssh -tt user@host -- mysql -uuser -ppassword

-t 选项强制分配伪终端。多个 -t 强制分配 tty,即使 ssh 没有本地 tty(请参阅 man ssh)。注意 -p 选项的使用。 -p和密码之间不能有空格(参见mysql手册)。

或者甚至直接通过 mysql 连接,如果 MySQL 主机可以从您的本地计算机访问:

mysql -hhost -uuser -p

不要忘记调整 shebang :

#!/bin/bash -

关于mysql - 交互式 ssh 和 mysql 命令的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434354/

相关文章:

mysql - 如何摆脱内部连接中的 OR 条件

php - 如何计算在mysql数据库行中特定单词的出现?

python - 如何将python3命令更改为python

linux - 更改 Linux 上的默认 ls 行为

xcode - 如何从构建阶段脚本更改 Xcode build设置环境变量?

mysql - 在 MySQL Bin Log 中搜索查询

php - 如何在具有交替行颜色的表中显示数据

c - 当我们在 c linux 中编写 socket(family, type, protocol) 时,内部到底发生了什么?

bash - 如何在 BASH 中使用 `while read -r line` 同时检查另一个文件是否为空?

bash - 从 .bashrc 启动后台进程