Frage Wie man flieht! im Passwort?


Wie könnte man dem Ausrufezeichen in einem Passwort entkommen:

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

Den offensichtlichen Backslash zu versuchen, hat nicht geholfen:

$ 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 umgekehrte Schrägstrich helfen würde, aber das tut es nicht. Es gibt keine Möglichkeit, Anführungszeichen wie in vorgeschlagen zu verwenden diese Frage. 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!


20
2017-08-02 10:30


Ursprung


Sie können immer einfache Anführungszeichen verwenden. Um einen einfachen Anführungsstrich "innerhalb" einer Zeichenfolge in Anführungszeichen zu verwenden, versuchen Sie Folgendes: ''\' - cas
Übrigens stellt das Eingeben des Kennworts in die Befehlszeile ein potenzielles Sicherheitsrisiko für ein Mehrbenutzersystem dar. Es ist trivial, die Befehlszeilenargumente eines laufenden Prozesses zu untersuchen. Verwenden Sie stattdessen eine .my.cnf-Datei (denken Sie daran, chmod 600 es). - cas
Hoppla. das ist '\''nicht ''\' - cas
Danke, Craig. Eigentlich ist das sicherer als die Alternative: E-Mailen Sie jedem eine Kopie des Passworts, das dann gespeichert wird, wer-weiß-wo. Ich persönlich würde es vorziehen, dass jeder Entwickler seinen eigenen hat /home/user und mysql Benutzer, aber ich bin nicht der Entscheider in dieser Hinsicht. - dotancohen
Management ist weise und allwissend :) - cas


Antworten:


Verwenden Sie einfache Anführungszeichen um das Passwort herum: -p'one_@&!two'

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

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


32
2017-08-02 10:32



kein Leerzeichen zwischen -p und Passwort, aber ja, das sollte funktionieren - mulaz
schon den platz raus geschnitten :) - cas


-bash: !two: command not found

Du musst auch dem entkommen & Charakter:

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

3
2017-08-02 10:36



Vielen Dank! Das war das eigentliche Problem, nicht das! - dotancohen


Wenn du nie die! History Features, könnte es bequemer sein, sie einfach zu deaktivieren (mit set +H in deinem bashrc).


3
2017-08-02 19:19





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

$ pass='one_@&!two'

Ersetzen Sie dann die Variable im Befehl:

$ mysql -umyuser -p$pass

0
2018-05-23 08:02