31

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

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

我无法使用该数据库。

请提出一个有效的命令。

4

6 回答 6

42

试试这个:

mysql -h host -u root -proot -e "show databases;";
于 2013-07-09T10:05:41.800 回答
16

试试这个:

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

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

于 2014-04-03T17:10:55.487 回答
6

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

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

该文档相当旧,但我可以使用它

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

使用 ssh 的最终工作命令:

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

于 2013-11-12T19:59:05.757 回答
3

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

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

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

于 2018-09-14T08:53:47.707 回答
3

经过几次测试后,这对我有用(与@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/ )。

于 2019-03-25T08:15:19.777 回答
1

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

ssh vagrant@192.168.10.10 mysql -h localhost -u root -p -e "'SELECT * FROM user;' mysql";
于 2020-09-15T03:48:26.197 回答