不通过提示从python-fabric重置mysql根密码
我正在尝试通过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
你可以在 env
的 dict
里设置一个环境变量 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'))