我希望能够在脚本任务中在远程服务器上运行单个查询。
例如,直觉上,我会想象它是这样的:
mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"
我希望能够在脚本任务中在远程服务器上运行单个查询。
例如,直觉上,我会想象它是这样的:
mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"
当前回答
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"
从用法打印输出:
- e,执行=名字 执行命令退出。(禁用——force和历史文件)
其他回答
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
在这个问题出现的时候,容器化还不是那么流行,下面是如何使用Ansible将单个查询传递到dockerized数据库集群的方法,使用@RC。的回答:
ansible <host | group > -m shell -a "docker exec -it <container_name | container_id> mysql -u<your_user> -p<your_pass> <your_database> -e 'SELECT COUNT(*) FROM my_table;'"
如果不使用Ansible,只需登录到服务器,使用docker exec -it…部分。
MySQL将发出一个警告,以纯文本传递凭据可能是不安全的,所以要意识到您的风险。
mysql -u <user> -p -e 'select * from schema.table'
(注意使用单引号而不是双引号,以避免shell将*扩展为文件名)
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"
从用法打印输出:
- e,执行=名字 执行命令退出。(禁用——force和历史文件)
下面是你如何用一个很酷的贝壳技巧来做到这一点:
mysql -uroot -p -hslavedb.mydomain.com mydb_production <<< 'select * from users'
'<<<'指示shell将后面的内容作为stdin,类似于echo中的管道。
使用-t标志来启用表格式输出