【问题标题】:Access to Mysql via ssh (Tunneling is not permitted ) [closed]通过 ssh 访问 Mysql(不允许隧道)[关闭]
【发布时间】: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 linux bash ssh


    【解决方案1】:

    您需要确保您有一个 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 就足够了。成为正式会员后,我会立即对此进行评分。非常感谢
    • 我明白了,这就是你使用两个 -t 的原因?
    • 我猜你正在从其他脚本执行它,在这种情况下你需要两个-t。拥有更多-ts 永远不会有什么坏处。
    • 实际上我将它作为别名运行,一个 -t 就足够了,但记住这一点很好。谢谢
    【解决方案2】:

    您的 MySQL 用户是否有足够的权限来执行此操作?

    您的 MySQL 用户是否有远程访问权限以远程连接并对此数据库进行操作?

    简而言之,您是否先测试了经典方法,然后再进一步,例如

    • 首先连接,
    • 第二次输入你的mysql命令
    • 第三次验证它是否有效。

    没有隧道:

    ssh user@server '/usr/bin/mysql -u{mysqlUser} -p{mysqlPassword} {mysqlDB} -e "select * from table"' 
    

    您可以使用-e 开关转义您的命令,默认转义字符为~

    如果它不起作用,那么我建议您查看 dba.stackexchange.com 上的 these thread

    【讨论】:

    • 是的,我可以 ssh 并且我可以毫无问题地运行此命令。 /usr/bin/mysql -u db_username -pdfdasdfCASDF -D db_12dgj
    • 所以建议的答案应该有效,不是吗?
    • 是的,J-16 SDiZ 的回答完美。感谢您的贡献。
    猜你喜欢
    • 2016-09-08
    • 2014-05-06
    • 2014-12-15
    • 2010-11-17
    • 2011-10-18
    • 2020-01-28
    • 2011-09-11
    • 2011-12-06
    • 2013-03-24
    相关资源
    最近更新 更多