2009-12-11 3 views
8

Возможно ли создание базы данных mysql из ткани динамически.Как создать динамическую базу данных 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) 

ответ

4

Попробуйте вместо

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

Не будет ли сохранить пароль в журнале истории оболочки ? –

+0

@Stavros Учитывая, что это открытые инструменты, которые доступны свободно, вы, вероятно, должны решить проблему, а не спрашивать меня. –

+14

Учитывая, что моя проверка и не видя ее, не докажет, что она не хранится нигде, лучшее решение - спросить вас (как вы могли бы узнать об этом больше), вместо того, чтобы предполагать, что я проверил каждое место, такое критическое отверстие безопасности может проявиться, не говоря уже о том, что не все, кто видит это, могут быть склонны к тому, чтобы проверить себя. Спасибо за ответ, хотя (и, для записи, я не видел пароль или команду в журнале оболочки). –

21

Там есть лучший способ сделать это с помощью mysqladmin:

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

. Джеффри, это работало и потребляло меньше ширины символов :) –

+0

Не будет ли это сохранять пароль в журнале истории оболочки? – ioanb7

0

Я использую после одного лайнера по командной строке

mysql -uroot -prootpassword -e "CREATE DATABASE dbname"; 

ключ -e переключатель.
, если вы хотите иметь Баш скрипт с переменными в дб/пользователь/пасс и запустить его как ./myscript затем

#!/bin/bash 
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 [email protected]'127.0.0.1' IDENTIFIED BY '$PASS'"; 
mysql -uroot -prootpassword -e "GRANT SELECT, INSERT, UPDATE ON $DB.* TO '$USER'@'127.0.0.1'"; 

 Смежные вопросы

  • Нет связанных вопросов^_^