我正在尝试使用以下命令在远程机器上运行MySQL查询:
ssh user@192.168.2.26 "mysql -uroot -proot -e \"use test";""
我无法使用那个数据库。
请建议一个可行的命令。
我正在尝试使用以下命令在远程机器上运行MySQL查询:
ssh user@192.168.2.26 "mysql -uroot -proot -e \"use test";""
我无法使用那个数据库。
请建议一个可行的命令。
试一下这个:
mysql -h host -u root -proot -e "show databases;";
试试这个:
ssh root@host "mysql database -e 'query to run on table_name; more queries to run;'"
如果该用户具有执行SQL查询的权限,甚至启动mysql的权限,就可以使用user@host
来完成相同的操作。 使用-e
与--execute
相同,它将运行您放在尾随引号(单引号或双引号)中的任何内容,并退出。 标准输出格式与您使用--batch
看到的格式相同。
MySql似乎有一种特殊的命令行语法,其中包括数据库。
mysql -u 用户名 -p -e 'SQL查询语句' 数据库名称
这份文档可能有些旧,但我已经让它正常工作了。
http://www.cyberciti.biz/faq/run-sql-query-directly-on-the-command-line/
最终可用的ssh命令:
ssh 用户名@主机名 "mysql -u 用户名 -e 'show tables;' 数据库名称"
这段代码最终在我的Bash脚本中运行成功:
query='USE [database]; SELECT ...'
mysql='mysql -u [username] -p[password] -e '"'""$query""'"
ssh [username]@[server] -t "$mysql"
如果你想让它更安全,那么请添加提示输入密码,不要将密码存储在可能不安全的地方。
在经过几次测试后,这对我有用(基本上与@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"
在我的主机环境中运行此操作,连接到Homestead虚拟机中的MySQL数据库后,获得了不错的结果......不过我需要先在虚拟机内设置root密码才能让它正常工作。
ssh vagrant@192.168.10.10 mysql -h localhost -u root -p -e "'SELECT * FROM user;' mysql";