Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接到服务器,然后使用bash脚本strt mysql_Mysql_Linux_Bash - Fatal编程技术网

连接到服务器,然后使用bash脚本strt mysql

连接到服务器,然后使用bash脚本strt mysql,mysql,linux,bash,Mysql,Linux,Bash,一天中我多次键入相同的命令,因此我认为编写一个shell脚本来避免重复可能是件好事。我还认为这可能是学习更多shell编码的好方法,因为我通常使用OOP语言 代码应该打开到我的服务器的ssh连接,然后启动mysql并选择我想要使用的数据库。我正在努力使代码正常工作。我猜这是因为bash脚本在本地机器上,我需要在远程机器上执行if。我找不到任何这样做的例子。这是我的密码: #!bin/bash #Script to automate login to remote server and sele

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

代码应该打开到我的服务器的ssh连接,然后启动mysql并选择我想要使用的数据库。我正在努力使代码正常工作。我猜这是因为bash脚本在本地机器上,我需要在远程机器上执行if。我找不到任何这样做的例子。这是我的密码:

#!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   
当我运行此命令时,会出现以下错误: 错误2002(HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地MySQL服务器

如何修复此代码?我正确地解释了这个错误消息:我的脚本无法工作的原因是mysql命令正在我的机器上而不是服务器上运行


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

您需要在SSH命令的上下文中运行这些命令。这可以通过bash-here文档完成。请看这里:

例如:

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

ssh-otherhost实际上,我已经多次使用bash-x调用它来观察它的行为,包括在MySQL行中使用ssh前缀。我仍然得到同样的结果。你不能从代码的数量来判断尝试的数量,所以你的评论和投票是错误的。我应该知道吗?您的问题中没有任何尝试或过程。@Aaron,这个问题似乎有效。添加请求的信息有什么区别?@AaronRumery我不确定为什么失败的尝试与解决问题有关?我在阅读stack上的文章时的一般假设是,人们问问题是因为他们试图解决问题,而其他人回答问题是因为他们想帮助其他人学习和解决问题。我不觉得这更复杂了?知道到目前为止我做错了什么只会帮助人们避免错误的回答。我假设有人知道我做错了什么,因为他们编写shell代码的时间比我长。在Stackoverflow和各种网站上,已经有很多示例可以使用SSHing到远程服务器并运行MySQL命令。但我不是这么问的。我希望能够从客户端脚本而不是通过触发远程脚本使整个过程自动化。谢谢Aaron。也谢谢你在我们到达事情的核心之前一直陪着我。