2014-05-20 1 views
5

Hallo Ich habe ein Skript, um einige MySQL-Datenbanken zu partitionieren. Wir aktualisieren von 5.5 auf 5.6. Beim Testen der Skripte habe ich festgestellt, dass mysql mit der neuen Version 5.6 Warning: Using a password on the command line interface can be insecure. zurückgibt, was ist der beste Weg, um dies zu beheben? Ich lese eine Abhilfe wäre 2>/dev/null, aber ich werde nicht in der Lage sein, den Exit-Code oder irgendwelche Fehler zu bekommen, wenn sie passieren. Gibt es einen anderen Weg, dies zu tun? Hier ist die problematische Codezeile:Bash Script Mysql Warnung: Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein

MYSQL_RESULT=`echo "SET sql_log_bin=0;SET @pdb='$DB',@ptable='$table';CALL maintenance(@pdb,@ptable);SET sql_log_bin=1;"|mysql -uUSER -pPASSWORD database` 

Antwort

5

Eine Möglichkeit, dies zu umgehen die entsprechenden Variablen in Ihrer ~/.my.cnf Datei zu setzen ist. Ähnliches sollte helfen:

[mysql]                                     
user=my_username                                   
password=my_password 

Dies sollte im Home-Verzeichnis des Benutzers, der den Befehl ausführt, liegen. Und vergessen Sie nicht, die richtigen Berechtigungen für die Datei festzulegen, damit sie nicht von anderen Benutzern gelesen werden kann: chmod 600 ~/.my.cnf.

0

Wenn Sie mit MySQL/5.6.6 oder höher Sie eine gebündelte Werkzeug mysql_config_editor genannt verwenden:

Das mysql_config_editor utility [...] können Sie Authentifizierungsinformationen in einem verschlüsselten Login Pfad speichern, Datei mit dem Namen .mylogin.cnf. Der Speicherort der Datei ist das %APPDATA%\MySQL -Verzeichnis unter Windows und das Ausgangsverzeichnis des aktuellen Benutzers auf Nicht-Windows-Systemen . Die Datei kann später von MySQL-Client-Programmen gelesen werden, um Authentifizierungsdaten für die Verbindung mit MySQL Server zu erhalten.

Mit einem solchen Werkzeug können Sie eine Reihe von Namen Anmeldeinformationen („Login Pfade“) zuordnen:

$ mysql_config_editor set --login-path=backup-user --host=localhost --user=backup --password 
Enter password: 
$ mysql_config_editor print --all 
[backup-user] 
user = backup 
password = ***** 
host = localhost 

..., die später von Kunden verwendet werden können, die diese Funktion unterstützen (wie zB der offizielle Kommandozeilen-Client oder mysqldump):

$ mysql --login-path=backup-user 
Welcome to the MySQL monitor. Commands end with ; or \g. 

natürlich 5.6.6+ mit dem Hauptgrund von « Warnung erhalten: U Singen ein Passwort auf der Kommandozeilen-Schnittstelle kann unsicher sein » an erster Stelle ;-)