【问题标题】:connect to server then strt mysql with bash script [duplicate]连接到服务器,然后使用 bash 脚本 strt mysql [重复]
【发布时间】:2018-09-03 05:33:24
【问题描述】:

一天中我多次键入相同的命令,因此认为编写一个 shell 脚本来避免重复可能会很好。我还认为这可能是学习更多关于 shell 编码的好方法,因为我通常使用 OOP 语言。

代码应该打开到我的服务器的 ssh 连接,然后启动 mysql 并选择我希望使用的数据库。我正在努力使代码正常工作。我猜这是因为 bash 脚本在我的本地机器上,如果在远程机器上我需要以某种方式执行。我找不到任何有关如何执行此操作的示例。这是我的代码:

#!bin/bash

#Script to automate login to remote server and select specific mysql database

password="myPassword"
username="myUserName"
remoteuser="myUsername@my.se.rv.er.00"
echo "Attempting login to server.."

#attempt ssh connection to remote server...
status=$(ssh -o BatchMode=yes $remoteuser echo ok 2>&1)

    #if connection is made...
    if [[ $status == ok ]] ; then
        echo "connection established"
        echo "attempting mysql login..."

        #attempt to start mysql and select my database
         mysql --user=$username -p$password  -Bse"USE mydatabase; show tables;"

    elif [[ $status == "Permission denied"* ]] ; then
        echo "Permission denied"
    else
        echo "other_error"
    fi   

当我运行它时,我得到了错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

如何修复此代码?我正在正确解释此错误消息:我的脚本不起作用的原因是因为 mysql 命令正在我的机器上而不是服务器上运行?

代码的目的不是启动在我的服务器上运行的脚本,而是制作一个连接到我的服务器的完整脚本,确认连接,然后将我登录到远程机器上的 mysql 以便我可以继续通过我自己的终端进行处理。

【问题讨论】:

  • 实际上,我已经经历了几次迭代,用 bash-x 调用它来观察它的行为,包括在 MySQL 行中使用 ssh 前缀。我仍然得到相同的结果。您无法从代码量判断尝试次数,因此您的评论和投票是轻率的
  • 我怎么知道?您的问题中没有说明您的任何尝试或过程。
  • @Aaron,这个问题似乎是有效的。添加请求的信息有什么不同?
  • @AaronRumery 我不确定为什么失败的尝试与解决问题有关?在阅读堆栈上的帖子时,我的一般假设是人们提出问题是因为他们试图解决问题,而其他人回答问题是因为他们想帮助其他人学习和解决问题。没想到更复杂?到目前为止,知道我做错了什么只会帮助人们不回答错误。我假设回答的人知道我做错了什么,因为他们编写 shell 代码的时间比我长。
  • 已经有很多通过 SSH 连接到远程服务器并运行 MySQL 命令的示例,这些示例可在 Stackoverflow 和各种网站上找到。

标签: mysql linux bash


【解决方案1】:

您需要在 SSH 命令的上下文中运行这些命令。这可以通过 bash here 文档来完成。见这里:http://www.tldp.org/LDP/abs/html/here-docs.html

例子:

ssh otherhost << EOF
  ./someaction.sh 'some params'
EOF

【讨论】:

  • 这不是我要问的。我希望能够从客户端脚本而不是通过触发远程脚本来使整个事情自动化。
  • 谢谢亚伦。也感谢您对我的包容,直到我们到达问题的关键。
猜你喜欢
  • 2019-05-18
  • 2015-09-04
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
相关资源
最近更新 更多