Come testare le credenziali MySQL dalla riga di comando su un server Linux?
Come testare le credenziali MySQL dalla riga di comando su un server Linux?
Risposte:
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();
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=tcp
riga 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 root
e 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.
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 1
fino alla fine per uscire automaticamente su argomenti non validi. Puoi anche reindirizzare stderr a /dev/null
se non ti piace il messaggio di errore MySQL generato automaticamente.
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.