mysql后台_使用MySQL在后台运行SQL查询

有没有办法在我关闭计算机后在服务器上运行SQL查询?

我从一位同事那里听说有,她希望我这样做。 我相信她说它被称为"屏幕"?

是的,在Linux中有屏幕命令,只需在终端输入屏幕然后它会打开一个新的终端(新屏幕),然后在那里运行你的SQL命令然后按Ctrl + d然后从ssh断开它仍然会在后台运行你可以检查 再次通过登录到ssh并键入屏幕-r

什么样的查询? 根据服务器版本和配置,还有EVENT。

我试图用ctrl + D关闭它,但它似乎没有工作。

我认为Uueerdo对事件是正确的,但如果你的同事问你并知道它,也许可以向她询问更多信息。 这种沟通在工作场所很好,而且你也不冒险建立与她想要的不同的东西。 不知道或不理解某些事情并不可耻,但隐藏这一事实可能导致错误的期望和许多压力和挫折感。

我假设您正在服务器,并希望能够关闭本地工作站。

您可以使用nohup和后台进程。 了解mysql命令的-e选项也很有用。

所以像这样:

nohup mysql -u -p -e 'Insert Query Here' &

nohup用于'禁止挂断',即在我没有结束进程时

断开。

mysql ...您经常运行的mysql命令

要连接,只需添加-e选项即可运行查询而无需打开

mysql会话

&在后台启动该过程

我不确定这个但是:

如果您不想在命令中输入密码,请运行不带密码的命令,输入fg密码提示应该回来,输入密码,ctrl-z会将进程发回后台,然后你 可以断开连接

最好的方法是:nohup mysql-u -p -e'你的sql语句'> / dev / null 2>&1

@ShahadatHossainKhan,为什么那更好? 如果没有重定向任何消息或错误转到nohup.out,那么您可以查看查询是否有效。

在沉默运行方面,但如果你想调试它不是一个好方法我同意

这对我有用。 谢谢

如果您发现使用nohup与mysql一起遇到问题 - 我在本页找到了一个受@ dan08答案启发的替代解决方案,以及@Node关于将已经运行的进程从SO上的另一个问题放入后台的答案。

我发现在尝试使用nohup mysql...到'后台'一个长时间运行的mysql命令的建议时,我试图连接的远程MySQL服务器拒绝了连接。运行相同的mysql命令而不用nohup作为前缀时,连接成功,mysql命令按预期工作。

因此,我寻找替代方法来实现相同的最终结果,即能够运行长时间运行的SQL命令(或一组SQL命令),而不用担心如果我从shell会话断开连接或网络问题,进程终止导致远程服务器断开连接。这项研究得出了以下提出的工作解决方案:

运行mysql命令,就好像要在前台运行它一样;例如:mysql-h -u -p -e"source

/absolute/path/to/commands.sql" 2>&1 >

./mysql_output.log

询问时,在MySQL命令提示符下输入指定的相关密码(这是通过在上面的mysql命令中包含-p标志触发的)。

立即按Ctrl + Z暂停当前进程,在本例中为mysql。

运行bg命令将当前挂起的进程移动到后台,然后继续处理。

运行jobs命令列出当前在shell会话中运行的作业(如果当前会话中没有运行任何其他后台进程,则可能只列出一个作业)。从此列表中注明mysql的作业编号,如果您只运行一个作业,则该编号可能1。

最后但并非最不重要的是,运行disown -h %命令,因此disown -h %1(假设在上面的步骤#5中获得的作业号是1)。最后一个命令非常重要,因为它将当前shell会话与我们刚刚移入后台的mysql进程解除关联,以便在终端shell会话结束时mysql进程不会被终止。如果没有调用disown,那么现在在后台运行的mysql进程在终端会话结束时仍然会被终止。

上面的命令序列有效地模拟了对nohup mysql...的调用,允许您将长时间运行的调用mysql移动到后台,如果关闭终端会话或从远程服务器断开连接,则不会终止进程。如果您发现运行nohup mysql...在您的环境中工作非常好,因为它肯定是更容易和更快速的方法,但至少在我们的应用程序/服务器环境中,我们无法成功使用nohup mysql...。

上面的序列还可以让您更好地控制执行mysql命令,因为您最初在前台运行命令;例如,在前台运行mysql将允许您在MySQL提示符下安全地输入您的MySQL连接密码,而无需在命令行上提供密码作为纯文本(这可能是某些托管/服务器中的重要安全考虑因素)环境,尤其是共享主机,其中在命令行上输入的密码可能最终会出现在日志文件中,例如?/ .bash_history或类似内容。此外,在前台运行命令将允许您在MySQL命令移动到后台之前查看并响应任何连接或其他错误。

还必须在本页面上获得@ dan08的答案,并向@Node提供有关将已经运行的前台进程放入后台的答案,以帮助激发此处提出的解决方案。

希望这个提议的解决方案能够帮助那些发现自己处于类似情况的人,其中nohup mysql...运行不能按预期工作。

nohup mysql -h [host_ip_addr] -u [username] -p[password] [database_name] -e"sql_query" &

注意:在-p之后不要给出空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值