2009-12-11 4 views
8

Ist es möglich, mysql Datenbank dynamisch aus Fabric zu erstellen.Howto mysql Datenbank dynamisch aus Fabric zu erstellen

Dies scheint, wie es bei dem Kennwort abfragt

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) 

Antwort

4

statt Versuche

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

Will nicht, dass das Passwort in dem Shell-Verlaufsprotokoll speichern ? –

+0

@Stavros Wenn man bedenkt, dass es sich um offene Tools handelt, die frei verfügbar sind, sollte man sich die Mühe machen, sich selbst zu überprüfen, anstatt mich zu fragen. –

+14

In Anbetracht dessen, dass meine Überprüfung und nicht sehen, dass es nicht beweisen wird, dass es nirgendwo gespeichert wird, ist die bessere Lösung, Sie zu fragen (wie Sie mehr darüber wissen können), anstatt davon auszugehen, dass ich jeden Ort so ein kritisches Sicherheitsloch überprüfte sich manifestieren könnte, ganz zu schweigen davon, dass nicht jeder, der dies sieht, geneigt sein könnte, sich selbst umzusehen. Danke für die Antwort, aber (und für das Protokoll habe ich nicht das Passwort oder den Befehl im Shell-Log gesehen). –

21
klemmt

Es gibt einen besseren Weg, um diese mit mysqladmin tun:

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

Vielen Dank Jeffrey, das hat funktioniert und weniger Zeichenbreite verbraucht :) –

+0

Wird das Passwort nicht im Shell-Verlaufsprotokoll gespeichert? – ioanb7

0

ich verwende nach einem Liner über die Befehlszeile

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

Schlüssel ist der Schalter -e.
, wenn Sie mit Variablen in db/user Bash-Skript haben, mögen/geben und führen Sie es als ./myscript dann

#!/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'";