mysql - 通过bash脚本在远程服务器上执行mysql

标签 mysql bash

我需要在远程服务器上执行 mysql 命令,但在执行实际 mysql 位时似乎遇到了问题

#!/usr/bin/expect -f
spawn /usr/bin/ssh -t root@10.0.0.2
expect "password: "
sleep 1
send "password\r"
sleep 2
/usr/bin/mysql databasename -e "update device_log set status = 'Y' where device_id in ('1','2');"

基本上我想在设备 ID 1&2 上将标志更改为 Y

但是脚本输出

无效的命令名称“/usr/bin/mysql”

最佳答案

只需将 mysql 命令附加到 ssh 命令即可一次性运行它,如下所示:

#!/usr/bin/expect -f
spawn /usr/bin/ssh -t root@10.0.0.2 /usr/bin/mysql databasename -e "the query"
expect "password: "
sleep 1
send "password\r"

我不太喜欢expect,但我希望您在mysql行中的尝试实际上并不是expect运行命令的有效语法.

另外:

  • 应该使用 SSH key 进行无密码登录,而不是在脚本中硬编码 root 密码。
  • 考虑远程运行 MySQL,例如mysql -h 10.0.0.2 -e“查询”,或
  • 在 SSH 中使用端口转发来安全地连接到 MySQL,例如在后台运行 ssh -L 3307:localhost:3306 root@10.0.0.2 ,然后连接到 localhost 上的 TCP 端口 3307 mysql -h 127.0.0.1 -P 3307 。

关于mysql - 通过bash脚本在远程服务器上执行mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16835985/

相关文章:

linux - 如何修改/子集 wget 脚本以指定日期范围以仅将某些年份下载到不同的脚本中?

bash - 通过用户数据在 EC2 实例上安装 CodeDeploy 代理

linux - 执行程序崩溃后如何重置 tty?

MySQL:计算两个日期列并按天分组

sql - 主键是否自动索引?

php - 使用复选框将多行插入MySQL

python - 使用 python bash float 数学

ruby-on-rails - Rails3 : How to set bash environment variables that are project-specific?

php - 通过标签检索相关帖子

MySQL:如何按字段对行进行排序并为另一个字段分配一个计数器?