Testare le credenziali MySQL dalla riga di comando di Linux?


Risposte:


5

La risposta di Phil e la risposta di Mr.Brownstone dovrebbero essere sufficienti per la tua domanda, quindi +1 per entrambi.

Per quanto segue, supponiamo che tu stia effettuando l'accesso con nome utente myuser

Dopo esserti connesso a mysql, dovresti eseguire la seguente query:

SELECT USER(),CURRENT_USER();
  • USER () riporta come hai tentato di autenticarti in MySQL
  • CURRENT_USER () riporta come ti è stato permesso di autenticarti in MySQL

A volte sono diversi. Questo potrebbe darti un'idea del perché ti è permesso accedere a mysql.

Ecco un'altra query che devi eseguire:

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

Questo ti mostrerà i modi in cui ti è permesso accedere come myuser.

Se vedi 'myuser'@'localhost', puoi autenticarti dall'interno del DB Server.

Se vedi 'myuser'@'127.0.0.1'e non vedi 'myuser'@'localhost', puoi eseguire nuovamente l'autenticazione dal DB Server ma devi specificare la --protocol=tcpriga di comando.

Se vedi 'myuser'@'%', puoi eseguire accessi remoti da qualsiasi server.

Se vedi 'myuse'r@'10.20.30,%', allora puoi effettuare accessi remoti solo dal 10.20.30.% Netblock.

Quando vedi cosa ha "mysql.user" per il tuo utente, potresti voler consentire o impedire a myuser di accedere in un modo e non nell'altro.

Se vuoi semplicemente verificare se la password myuserè whateverpassword, puoi fare quanto segue:

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

Puoi controllare dalla riga di comando come segue:

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

Se non lo sei roote vuoi provare solo myuser, puoi farlo:

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

Se ne ottieni 1, la password per myuser viene verificata come valida.


13
mysql -h host -u user -p<whatever> -e"quit"

Ciò consente di utilizzare la stessa stringa di connessione utilizzata per l'invio a livello di codice di query al server. È possibile aggiungere || exit 1fino alla fine per uscire automaticamente su argomenti non validi. Puoi anche reindirizzare stderr a /dev/nullse non ti piace il messaggio di errore MySQL generato automaticamente.


6

Puoi usare il seguente comando (supponendo che tu abbia configurato mysql nel tuo PERCORSO):

mysql -h host -u utente -p

Sostituisci semplicemente host e utente con i valori corretti e ti verrà richiesta la password.


2
Voglio controllare a livello di codice. Come qualcosa che ritorni vero o falso.
Jake Wilson,

2
mysql --user=user_name --password=your_password dbname

La tua domanda è così semplice o c'è un caso specifico che devi testare?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.