在命令行中通过ssh在远程机器上运行mysql查询

时间:2013-07-09 09:40:02

标签: mysql ssh remote-access

您好我正在尝试在远程计算机上运行mysql查询

我试过这个

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

我无法使用该数据库

请建议工作指令

由于

6 个答案:

答案 0 :(得分:31)

试试这个:

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

答案 1 :(得分:8)

试试这个:

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

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

答案 2 :(得分:3)

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

mysql -u user -p -e'SQL Query'数据库

这个文档相当陈旧,但我让它工作

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

使用ssh的最终工作命令:

ssh user @ host“mysql -u user -e'show tables;'数据库名称“

答案 3 :(得分:1)

从宿主环境在Homestead VM上针对MySQL运行此操作产生了很好的结果……尽管我必须首先从VM内设置root密码才能正常工作。

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

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

经过几次测试(与@ 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 选项允许通过远程外壳以交互方式提示密码。

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