如何使用我的fab文件运行SQL查询,如下所示
def allow_webservers_for_db():
for ip in env.web_servers:
run('echo "GRANT ALL ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s'; | mysql --user=%s --password=%s"' % (env.db_schema, env.db_web_user, ip, env.db_password, env.db_user, env.db_password), pty=True)
run('echo "UPDATE db SET host='%s' where db='%s'; | mysql --user=%s --password=%s --database=mysql"' % (ip, env.db_schema, env.db_web_user, env.db_password), pty=True)
run('echo "UPDATE user SET host='%s' where user='%s';| mysql --user=%s --password=%s --database=mysql"' % (ip, env.db_web_user, env.db_user, env.db_password), pty=True)
代码运行没有错误,但不执行它必须执行的操作。如果我将echo
生成的代码复制并粘贴到 mysql 终端mysql>
查询正常运行。
我在这里错过了什么?有没有办法更好地运行mysql查询?我也不想从文本文件加载它。
你只是在回显整个字符串。但是您希望将第一部分回显到 mysql 的管道中。取下最后一个"
并将其放在 ;
和 |
之间。
第一行示例:
run('echo "GRANT ALL ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s';" | mysql --user=%s --password=%s' ....