不通过提示从python-fabric重置mysql根密码

1 投票
2 回答
732 浏览
提问于 2025-04-18 07:34

我正在尝试通过Python-fabric来自动化一个应用程序的部署。这个安装过程必须完全不需要人工干预。

在CentOS 6.4服务器上,如果我通过

$yum install mysql-server

来安装mysql,那么mysql会被安装时密码是空的。

现在的问题是,当我通过fabric重置mysql的root密码时,使用的是:

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

它会提示输入密码(而这个密码是空的),我必须按回车键才能继续。

因为我想实现“完全”的自动化,所以我希望这个“按回车”的动作能够自动完成。我该如何在python-fabric中实现这个呢?

2 个回答

0

你可以在 envdict 里设置一个环境变量 password(如果没有密码的话,直接用 "" 应该可以)或者用 -I <pwd> 这个选项来调用 fab

我一般会选择后者,因为这样不依赖于具体的代码。

根据提问者的评论进行的编辑:

试试把 run 换成 sudo 来执行命令(同时仍然使用上面提到的方法之一)。

根据提问者后续评论的编辑 2:

根据提供的信息,我觉得 sudo 是关键,但可能需要设置一些特定的参数。可以查看这个链接了解更多:http://docs.fabfile.org/en/latest/api/core/operations.html#fabric.operations.sudo

根据提问者额外后续评论的编辑 3:

关于这是 mysql 的根密码而不是操作系统的密码,这里有一些值得思考的内容:在 Ubuntu 上安装 mysql 而不提示输入密码

1

当MySQL的密码为空时,你可以在登录这个账户时不加 -p 这个选项。所以你可以把你的运行命令改成:

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

撰写回答