我有一个带有MySQL数据库的远程Web服务器。现在,我正在使用SSH进行任何服务器管理,我经常访问MySQL。我想知道我是否有可能制作一个可以进入服务器的脚本,并且是否在命令行上运行" -sql"(如更改),它将进入mySQL。
。我到目前为止所做的:
#!/bin/bash
if [ "$1" == "-l" ]; then
ssh user@192.168.0.101 //local address for privacy;
mysql -u root -p;
else
ssh user@192.168.0.101
fi
这将导致SSH会话,当它结束时,我的计算机将尝试在本地计算机上创建MySQL连接。
#!/bin/bash
if [ "$1" == "-l" ]; then
ssh user@192.168.0.101 'mysql -u root -p';
else
ssh user@192.168.0.101
fi
这会导致密码请求,然后什么也没有。我之所以假设它是因为将SSH与命令一起使用,然后期望响应,然后关闭连接。
有没有任何方法来做到这一点,我意识到这并不重要,但是玩
很有趣预先感谢
mysql
命令仅在输入为终端时进行交互执行。当您使用命令参数运行ssh
时,通常不会在服务器上分配伪tty。因此,mysql
只是在不显示提示的情况下处理其标准输入。
使用-t
选项强制以下操作:
ssh -t user@192.168.0.101 'mysql -u root -p'
您可能需要考虑解决此类访问问题的一个选项是通过使用SSH中的隧道设施:
ssh -l user -L 33306:192.168.0.101:3306 192.168.0.101
或也许
ssh -l user -L 33306:127.0.0.1:3306 192.168.0.101
这将在您的本地计算机(33306)上创建一个端口,该端口可隧道到远程计算机上的MySQL端口(3306)。
然后,在您的本地计算机上,您运行了MySQL的本地副本:
mysql --port=33306 -u root -p
应该通过隧道端口连接到数据库。
尝试这样。用命令馈送MySQL密码。因此,您不必输入密码。
ssh user@192.168.0.101 'mysql --user="root" --password="password" --database="database" --execute="My Query;"'
另外,我建议您设置基于密钥的SSH身份验证。因此,您也可以避免每次键入SSH密码。