Użyj polecenia w pliku, aby wprowadzić mysql lub inne środowisko podobne do powłoki

1

Powiedzmy, że mamy zapisane hasło /root/mysql-password. Czy istnieje sposób na połączenie się z MySQL bez ręcznego kopiowania hasła z tego pliku i wchodzenia do niego mysql -u root -p{passowrd}?

Na przykład coś takiego:

mysql -u root -p | {command} /root/mysql-password
RuslanN
źródło

Odpowiedzi:

1

Najłatwiejszym sposobem byłoby utworzenie /root/.my.cnfpliku (nie zapomnij chmod 0600) w tym formacie:

[client]
user=root
password=rootpass

Jeśli coś robisz i nie możesz mieć pliku /root/.my.cnf, powinieneś być w stanie go utworzyć filename.cnfi wywołać MySQL w --defaults-filenastępujący sposób:

mysql --defaults-file=/root/squirrellyfiles/filename.cnf
Bryan
źródło
Dziękuję za odpowiedź. Czy to jest jedyny sposób? I nie ma wspólnego „linuksowego sposobu” na robienie takich rzeczy?
RuslanN
Przepraszam, nie jestem pewien, czy rozumiem dokładnie o co pytasz. W Linuksie zazwyczaj masz poświadczenia w płaskim pliku konfiguracyjnym (np .my.cnf), w haszowanym lub zaszyfrowanym pliku, zmiennych środowiskowych, za pomocą kluczy ssh lub monitu o hasło. Przekazywanie hasła bezpośrednio przez polecenie jest bardzo niepewne. Czy robisz coś, co nie działa dla Ciebie plik domyślny lub .my.cnf?
Bryan,
Moje hasło znajduje się w pliku i ilekroć chciałem połączyć się z mysql, musiałem „cat file / with / password” skopiować go i „mysql -u user -ppassword” Myślałem, że można zautomatyzować ręczne ręczne kopiowanie
RuslanN
0

To może nie być preferowany sposób rozwiązania konkretnego problemu, ale tak zwanym „sposobem na Linuksa” byłoby użycie odwrotnych poleceń:

mysql -u root -p `cat /root/mysql-password`
Andrew Palmer
źródło