【发布时间】:2013-07-06 20:47:53
【问题描述】:
我正在尝试使用以下命令在远程机器上运行 MySQL 查询:
ssh user@192.168.2.26 "mysql -uroot -proot -e \"use test";""
我无法使用那个数据库。
请提出一个有效的命令。
【问题讨论】:
标签: mysql ssh remote-access
我正在尝试使用以下命令在远程机器上运行 MySQL 查询:
ssh user@192.168.2.26 "mysql -uroot -proot -e \"use test";""
我无法使用那个数据库。
请提出一个有效的命令。
【问题讨论】:
标签: mysql ssh remote-access
试试这个:
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;'"
user@host 也可以这样做,如果该用户有权执行 SQL 查询,更不用说一般启动 mysql。使用-e 与--execute 相同,它将运行您放在尾随引号(单引号或双引号)中的任何内容并退出。标准输出格式与使用--batch 时看到的相同。
【讨论】:
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 '显示表;'数据库名称"
【讨论】:
这最终在 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"
“诀窍”是命令周围的引号。
-t 选项允许通过远程 shell 以交互方式提示密码。
这里的 kom 只是我的 ~/.ssh/config 文件中定义的 ssh 配置标识符(在此处查看更多信息:https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/)。
【讨论】:
在我的 Homestead 虚拟机中从我的主机环境中针对 MySQL 运行它产生了一个很好的结果......尽管我确实必须首先从虚拟机中设置 root 密码才能使其工作。
ssh vagrant@192.168.10.10 mysql -h localhost -u root -p -e "'SELECT * FROM user;' mysql";
【讨论】: