Testować poświadczenia MySQL z wiersza poleceń systemu Linux?

17

Jak testujesz poświadczenia MySQL z wiersza poleceń na serwerze Linux?

Jake Wilson
źródło

Odpowiedzi:

5

@ Phil's Answer i @ Mr.Brownstone's Answer powinny wystarczyć na twoje pytanie, więc +1 dla obu z nich.

W poniższych przypadkach załóżmy, że logujesz się przy użyciu nazwy użytkownika myuser

Po nawiązaniu połączenia z mysql należy uruchomić następujące zapytanie:

SELECT USER(),CURRENT_USER();
  • USER () informuje o próbie uwierzytelnienia w MySQL
  • CURRENT_USER () informuje o tym, w jaki sposób możesz uwierzytelnić się w MySQL

Czasami są inni. Może to dać ci wgląd w to, dlaczego możesz zalogować się do mysql.

Oto kolejne zapytanie, które musisz uruchomić:

SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';

To pokaże ci, w jaki sposób możesz się zalogować jako myuser.

Jeśli widzisz 'myuser'@'localhost', możesz uwierzytelnić się z poziomu serwera DB.

Jeśli widzisz 'myuser'@'127.0.0.1'i nie widzisz 'myuser'@'localhost', możesz ponownie uwierzytelnić się z poziomu serwera DB, ale musisz określić w --protocol=tcpwierszu polecenia.

Jeśli widzisz 'myuser'@'%', możesz wykonywać zdalne logowanie z dowolnego serwera.

Jeśli widzisz 'myuse'r@'10.20.30,%', możesz wykonywać zdalne logowanie tylko od 10.20.30.% Netblock.

Gdy zobaczysz, co „mysql.user” ma dla twojego użytkownika, możesz zezwolić lub ograniczyć mojemu użytkownikowi z logggin w jeden sposób, a nie w drugi.

Jeśli chcesz po prostu sprawdzić, czy hasłem myuserjest whateverpassword, możesz wykonać następujące czynności:

SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');

Możesz sprawdzić z wiersza poleceń w następujący sposób:

PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`

Jeśli nie jesteś rooti chcesz przetestować tylko mojego użytkownika, możesz to zrobić:

PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`

Jeśli otrzymasz 1, hasło dla użytkownika jest sprawdzane jako dobre.

RolandoMySQLDBA
źródło
13
mysql -h host -u user -p<whatever> -e"quit"

Dzięki temu możesz użyć tego samego ciągu połączenia, którego używasz do programowego wysyłania zapytań do serwera. Możesz dodać || exit 1na końcu automatyczne wyjście z nieprawidłowych argumentów. Możesz również przekierować stderr, /dev/nulljeśli nie podoba Ci się automatycznie wygenerowany komunikat o błędzie MySQL.

CSTobey
źródło
6

Możesz użyć następującego polecenia (zakładając, że w ścieżce skonfigurowano mysql):

mysql -h host -u użytkownik -p

Wystarczy zastąpić hosta i użytkownika prawidłowymi wartościami, a następnie pojawi się monit o podanie hasła.

Mr.Brownstone
źródło
2
Chcę to sprawdzić programowo. Jak coś, co zwraca prawda lub fałsz.
Jake Wilson,
2
mysql --user=user_name --password=your_password dbname

Czy twoje pytanie jest takie proste, czy jest jakiś konkretny przypadek, który musisz przetestować?

Philᵀᴹ
źródło