【问题标题】:Run MySQL query on remote machine through ssh in command line在命令行中通过 ssh 在远程机器上运行 MySQL 查询
【发布时间】:2013-07-06 20:47:53
【问题描述】:

我正在尝试使用以下命令在远程机器上运行 MySQL 查询:

ssh user@192.168.2.26 "mysql -uroot -proot -e \"use test";""

我无法使用那个数据库。

请提出一个有效的命令。

【问题讨论】:

    标签: mysql ssh remote-access


    【解决方案1】:

    试试这个:

    mysql -h host -u root -proot -e "show databases;";
    

    【讨论】:

    • 对于脚本,我会考虑使用 ~/my.cnf 或 MYSQL_PWD 变量 >> 参见 unix.stackexchange.com/questions/227648/…
    • 我认为最后一个分号是不必要的
    • 对我来说正确的答案是来自@King-Wzrd 的答案。这个缺少 ssh 命令的一部分,并且没有给出关于引号的指示,这是解决问题的真正问题
    【解决方案2】:

    试试这个:

    ssh root@host "mysql database -e 'query to run on table_name; more queries to run;'"
    

    user@host 也可以这样做,如果该用户有权执行 SQL 查询,更不用说一般启动 mysql。使用-e--execute 相同,它将运行您放在尾随引号(单引号或双引号)中的任何内容并退出。标准输出格式与使用--batch 时看到的相同。

    【讨论】:

    【解决方案3】:

    MySql 似乎有一个包含数据库的特殊命令行语法。

    mysql -u user -p -e 'SQL 查询'数据库

    这个文档比较旧,但我可以使用它

    http://www.cyberciti.biz/faq/run-sql-query-directly-on-the-command-line/

    使用 ssh 的最终工作命令:

    ssh user@host "mysql -u user -e '显示表;'数据库名称"

    【讨论】:

    • 谢谢!更高的反应对我不起作用,但你的。就我个人而言,我更喜欢在“-e 查询”之前使用“-D databasename”,因为它更明确 - 但两者都像魅力一样对我有用。感谢您的帮助!
    【解决方案4】:

    这最终在 bash 脚本中为我工作:

    query='USE [database]; SELECT ...'   
    mysql='mysql -u [username] -p[password] -e '"'""$query""'"
    ssh [username]@[server] -t "$mysql"
    

    如果您想让它更安全,请添加密码提示,而不是将其存储在可能不安全的地方。

    【讨论】:

    • 嗨@OZZIE,输出具有特殊字符,如+和- +--------------------+ |数据库 | +--------------------+ |信息架构 | +--------------------+ 如何在查询中解决这个问题
    【解决方案5】:

    经过几次测试后,这对我有用(与@King-Wzrd 的答案基本相同):

    ssh -t kom "mysql -uroot -p -e 'show databases;'"
    ssh -t kom "mysql -uroot -p < /home/ling/websites/jin_test/.deploy/tmp.sql"
    

    “诀窍”是命令周围的引号。

    -t 选项允许通过远程 shell 以交互方式提示密码。

    这里的 kom 只是我的 ~/.ssh/config 文件中定义的 ssh 配置标识符(在此处查看更多信息:https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/)。

    【讨论】:

      【解决方案6】:

      在我的 Homestead 虚拟机中从我的主机环境中针对 MySQL 运行它产生了一个很好的结果......尽管我确实必须首先从虚拟机中设置 root 密码才能使其工作。

      ssh vagrant@192.168.10.10 mysql -h localhost -u root -p -e "'SELECT * FROM user;' mysql";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-22
        相关资源
        最近更新 更多