如何从fabric动态创建mysql数据库

如何从fabric动态创建mysql数据库,mysql,sql,fabric,Mysql,Sql,Fabric,是否可以从fabric动态创建mysql数据库 这看起来像是在密码提示下卡住了 run('mysql -u %s -p %s -h %s ' % (env.mysqluser, env.mysqlpassword, env.mysqlhost), pty=True) run('CREATE DATABASE %s; ' % (dataname), pty=True) run('exit', pty=True) 试试看 run('echo "CREATE DATABASE %s;"|mysql

是否可以从fabric动态创建mysql数据库

这看起来像是在密码提示下卡住了

run('mysql -u %s -p %s -h %s  ' % (env.mysqluser, env.mysqlpassword, env.mysqlhost), pty=True)
run('CREATE DATABASE %s; ' % (dataname), pty=True)
run('exit', pty=True)
试试看

run('echo "CREATE DATABASE %s;"|mysql --batch --user=%s --password=%s --host=%s' % (dataname, env.mysqluser, env.mysqlpassword, env.mysqlhost), pty=True)

使用mysqladmin有一种更好的方法:

run('mysqladmin -u %s -p%s create %s' % (user, password, dbname))

我通过命令行使用以下一行程序

mysql -uroot -prootpassword -e "CREATE DATABASE dbname";
钥匙是-e开关。
如果您希望在db/user/pass中使用带有变量的bash脚本并将其作为./myscript运行,那么

#!/bin/bash

这不会把密码保存在shell历史日志中吗?@Stavros考虑到这些是免费提供的开放工具,你可能应该麻烦自己检查一下,而不是问我。考虑到我的检查和没有在那里看到它不会证明它不会被存储在任何地方,更好的解决方法是问你(您可能对此了解得更多)与其假设我检查了每个可能出现严重安全漏洞的地方,更不用说不是每个看到这一点的人都愿意亲自检查。不过,感谢您的回答(而且,我没有在shell日志中看到密码或命令)。即使密码未存储在shell历史记录日志中,这也会通过诸如“ps”之类的简单工具公开密码(如果您能够正确计时您的攻击)。因此,安全意识很好地建议远离此解决方案。事实上,此方法在中被称为“方便,但不安全”,以及在shell历史记录日志中保存密码的更好的替代方案?
DB="mydb"
USER="user1"
PASS="pass_bla"

mysql -uroot -prootpassword -e "CREATE DATABASE $DB CHARACTER SET utf8 COLLATE utf8_general_ci";
mysql -uroot -prootpassword -e "CREATE USER $USER@'127.0.0.1' IDENTIFIED BY '$PASS'";
mysql -uroot -prootpassword -e "GRANT SELECT, INSERT, UPDATE ON $DB.* TO '$USER'@'127.0.0.1'";