【发布时间】:2012-09-12 00:00:00
【问题描述】:
当我想访问只允许本地访问的 Mysql 服务器时,首先我需要 SSH 到该服务器,然后运行“mysql”命令。但是我想通过一个命令来运行它。
当我执行此命令时,终端会停止,并且光标会在 5 或 10 秒后冻结。
ssh arash@10.0.3.1 "/usr/bin/mysql -u db_username -pdfdasdfCASDF -D db_12dgj
有谁知道哪一部分错了?
【问题讨论】:
当我想访问只允许本地访问的 Mysql 服务器时,首先我需要 SSH 到该服务器,然后运行“mysql”命令。但是我想通过一个命令来运行它。
当我执行此命令时,终端会停止,并且光标会在 5 或 10 秒后冻结。
ssh arash@10.0.3.1 "/usr/bin/mysql -u db_username -pdfdasdfCASDF -D db_12dgj
有谁知道哪一部分错了?
【问题讨论】:
您需要确保您有一个 pty for readline。使用ssh 的-t 选项。
ssh -t -t user@server '/usr/bin/mysql -u{mysqlUser} -p{mysqlPassword} {mysqlDB} -e "select * from table"'
人 ssh(1):
-t 强制伪 tty 分配。这可以用来执行仲裁 将基于屏幕的程序放在远程机器上,可以是 非常有用,例如,在实现菜单服务时。多个 -t options 强制 tty 分配,即使 ssh 没有本地 tty。【讨论】:
-t。拥有更多-ts 永远不会有什么坏处。
您的 MySQL 用户是否有足够的权限来执行此操作?
您的 MySQL 用户是否有远程访问权限以远程连接并对此数据库进行操作?
简而言之,您是否先测试了经典方法,然后再进一步,例如
没有隧道:
ssh user@server '/usr/bin/mysql -u{mysqlUser} -p{mysqlPassword} {mysqlDB} -e "select * from table"'
您可以使用-e 开关转义您的命令,默认转义字符为~。
如果它不起作用,那么我建议您查看 dba.stackexchange.com 上的 these thread
【讨论】: