我正在研究MySQL,每次我都要
ssh XXX@XXX
命令,然后输入我的密码到学校服务器。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
)和密码。
我该怎么做?
答案 0 :(得分:2)
您不需要这么复杂的脚本就可以在远程计算机上输入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 -
答案 1 :(得分:-1)
使用my.cnf像ssh密钥一样存储密码。
https://easyengine.io/tutorials/mysql/mycnf-preference/
同样可以通过ssh -i参数传递ssh并传递远程主机的私钥路径。
祝你好运!