在没有提示的情况下从 python-fabric 重置 mysql root 密码

Posted

技术标签:

【中文标题】在没有提示的情况下从 python-fabric 重置 mysql root 密码【英文标题】:Resetting mysql root password from python-fabric without prompt 【发布时间】:2014-07-14 20:19:10 【问题描述】:

我正在尝试通过 Python-fabric 自动部署应用程序。安装必须在没有任何人为干预的情况下完成。

在 CentOS 6.4 服务器中,如果我通过安装 mysql

$yum install mysql-server

然后mysql是用NULL密码安装的。

现在的问题是当我通过发出以下命令从fabric 重置mysql root 密码时:

run("mysqladmin -u %s -p password %s " % ('root','khd5u8bWN'))

它提示输入密码(为 NULL),我必须按回车键才能继续。

现在我想实现“完全”自动化,我希望这个“按回车”自动。我如何在 python-fabric 中实现这一点?

【问题讨论】:

【参考方案1】:

您可以在env dict 中设置环境变量password(如果密码不是密码,"" 应该可以工作)或使用-I <pwd> 调用fab选项。

我通常使用后一个选项,因为它与代码无关。

根据 OP 的评论进行编辑:

尝试从使用run 切换到sudo 来运行命令(同时仍使用上述方法之一)。

编辑 2 以回应 OP 的后续评论:

根据提供的信息,我很确定 sudo 是这里的关键,但可能设置了某些参数。见http://docs.fabfile.org/en/latest/api/core/operations.html#fabric.operations.sudo

编辑 3 以响应 add'l OP 后续评论:

Re:这是mysql root 密码而不是操作系统密码,这可能会提供一些思考:install mysql on ubuntu without password prompt

【讨论】:

我调用了fab -I'' -H host command,但是在重置mysql root密码的时候还是提示输入密码 已编辑的答案带响应。 仍然提示输入密码:( 也许您需要在对sudo 的调用中指定user 参数? 密码提示不是linux用户密码。它的mysql root密码。不确定它是否会在这里工作。 ssh 连接是“基于密钥的”无密码登录。所以没有提示linux用户密码。【参考方案2】:

当 mysql 密码为空时,您可以通过省略 -p 选项登录到该帐户。因此,将您的运行命令更改为:

run("mysqladmin -u %s password %s " % ('root','khd5u8bWN'))

【讨论】:

以上是关于在没有提示的情况下从 python-fabric 重置 mysql root 密码的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有选择器的情况下从应用程序发送电子邮件? [复制]

在没有 libreoffice 的情况下从 word 创建 pdf

在没有 Segue 的情况下从 UITableViewCell 打开视图控制器

如何在没有开发人员帐户的情况下从 .app 文件构建 .ipa 文件?

是否可以在没有警报视图的情况下从 iPhone 中删除照片?

Flutter:在没有上下文的情况下从 InheritedWidgets 访问数据?