Czy istnieje sposób na przekazanie hasła użytkownika bazy danych do narzędzia wiersza poleceń mysqladmin?

103

Obecnie używam następujących, ale ZAWSZE prosi mnie o ręczne wpisanie hasła. Czy istnieje sposób na przekazanie tego w wierszu poleceń podczas uruchamiania pliku wykonywalnego?

mysqladmin processlist -u root -p
Ethan Allen
źródło
4
Ustaw MYSQL_PWD w environment ( export MYSQL_PWD=muhpassword) i wykonaj polecenie bez rozszerzenia -p. Zobacz Zmienne środowiskowe programu MySQL . Pomimo strasznych ostrzeżeń zawartych w instrukcji jest to raczej bezpieczne . Chyba że zaczniesz dziwne warez w tej samej powłoce, która może odkurzyć twoje środowisko i wysłać je do darkaspirator.cc.
David Tonhofer

Odpowiedzi:

190

Właśnie znalazłem odpowiedź ...

mysqladmin processlist -u root -pYOURPASSWORDHERE

Brak spacji między hasłem a -p

Ethan Allen
źródło
14
cudzysłowy są również dozwolone, jeśli hasło zawiera spacje, jak w:-p'YOURPASSWORD HERE'
Vigintas Labakojis
40
Wow ... prawdziwie intuicyjny ... Spacja pomiędzy -h localhosti, -u rootale nie -pPASSWORD. Klasyczni programiści, którzy wszystko utrudniają, niż to konieczne.
Kanion Kolob
4
@KolobCanyon możesz pominąć spację między -u a rootem, -urootdziała dobrze
Peter Ajtai
11
Ostrzeżenie: jest to uważane za niebezpieczne: dev.mysql.com/doc/mysql-security-excerpt/5.7/en/…
neverendingqs
3
@KolobCanyon: A jeśli Twoje hasło zaczyna się spacją? ;) Programista nie może zdecydować, czy spacja oddziela opcję od jej wartości, czy jest pierwszą literą hasła…
Stéphane
43

Próbować:

--password=PasswordTextHere 
ge0man
źródło
Przydatne, gdy trzeba podać „puste” hasło (oczywiście do celów testowych).
Ivo Pereira,
to również wydaje się być jedyną opcją przekazywania pustego hasła w wierszu poleceń (na przykład na instancji piaskownicy)
penCsharpener
10

To powinno działać: mysql -uroot -p'password'

Jeśli próbujesz zautomatyzować rozwiązanie mysql, możesz użyć hasła ze zmiennej:

mysql_pass=$(sudo grep -oP "temporary password is generated for root@localhost: \K(.*)" /var/log/mysqld.log)

mysql -uroot -p"$mysql_pass" < somescript.sql

3lvinaz
źródło