Wie entkommen? im Passwort?


24

Wie könnte man das Ausrufezeichen in einem Passwort umgehen:

$ mysql -umyuser -pone_@&!two
-bash: !two: event not found

Es half nicht, den offensichtlichen Backslash zu versuchen:

$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
name@domain.com [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)

Alle meine Google-Suchen deuten darauf hin, dass der Backslash helfen würde, aber nicht. Es gibt keine Möglichkeit, Anführungszeichen wie in dieser Frage vorgeschlagen zu verwenden . Die Zeile wird in einem .bashrc-Alias ​​verwendet. Keine Sorge, die hier gezeigten Benutzernamen und Passwörter sind nur Beispiele und werden nicht in der Produktion verwendet!


Sie können immer einfache Anführungszeichen verwenden. Um ein einfaches Anführungszeichen "innerhalb" einer Zeichenfolge mit einfachen Anführungszeichen zu verwenden, versuchen Sie ''\'
Folgendes

6
Übrigens ist die Eingabe des Kennworts in die Befehlszeile ein potenzielles Sicherheitsrisiko für ein Mehrbenutzersystem. Es ist ganz einfach, die Befehlszeilenargumente eines laufenden Prozesses zu untersuchen. Verwenden Sie stattdessen eine .my.cnf-Datei (denken chmod 600Sie daran).
cas

Hoppla. das '\''ist nicht''\'
cas

Danke, Craig. Tatsächlich ist dies sicherer als die Alternative: Sie senden jedem eine Kopie des Kennworts per E-Mail, in der gespeichert wird, wer weiß wo. Ich persönlich würde es vorziehen, wenn jeder Entwickler seinen eigenen /home/userund einen MySQL-Benutzer hat, aber ich bin in dieser Hinsicht nicht der Entscheidungsträger.
Dotancohen

2
Management ist weise und allwissend :)
cas

Antworten:


38

Verwenden Sie einfache Anführungszeichen um das Kennwort wie folgt: -p'one_@&!two'

Um es in einen Alias ​​zu setzen, würden Sie Folgendes tun:

alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''


1
kein Leerzeichen zwischen -p und Passwort, aber ja, das sollte funktionieren
mulaz

bereits bearbeitet aus dem Raum :)
cas

4
-bash: !two: command not found

Sie müssen auch den &Charakter entkommen :

$ mysql -umyuser -pone_@\&\!two

3

Wenn Sie das nie benutzen! Verlaufsfunktionen ist es möglicherweise praktischer, sie einfach zu deaktivieren (mit set +Hin Ihrem bashrc).


1

Sie können das Passwort in einer Bash-Variablen speichern:

$ pass='one_@&!two'

Ersetzen Sie dann die Variable im Befehl:

$ mysql -umyuser -p$pass

interessante
antwort
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.