mysql -h host -u user -p<whatever> -e"quit"
Ciò consente di utilizzare la stessa stringa di connessione utilizzata per l'invio di query al server a livello di codice. Puoi aggiungere || exit 1
alla fine per uscire automaticamente in caso di argomenti non validi. Potresti anche voler 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 PATH):
mysql -h host -u utente -p
Basta sostituire host e utente con i valori corretti e ti dovrebbe essere richiesta la password.
La risposta di @Phil e la risposta di @Mr.Brownstone dovrebbero essere sufficienti per la tua domanda, quindi +1 per entrambe.
Per quanto segue, supponiamo che tu stia effettuando l'accesso con il nome utente myuser
Dopo esserti connesso a mysql, dovresti eseguire la seguente query:
SELECT USER(),CURRENT_USER();
- USER() segnala come hai tentato di autenticarti in MySQL
- CURRENT_USER() segnala come sei stato autorizzato ad autenticarti in MySQL
A volte, sono diversi. Questo potrebbe darti un'idea del motivo per cui sei autorizzato ad 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 puoi accedere come myuser
.
Se vedi 'myuser'@'localhost'
, allora puoi autenticarti dall'interno del DB Server.
Se vedi 'myuser'@'127.0.0.1'
e non vedi 'myuser'@'localhost'
, allora puoi autenticarti nuovamente dall'interno del DB Server ma devi specificare --protocol=tcp
dalla riga di comando.
Se vedi 'myuser'@'%'
, quindi puoi eseguire accessi remoti da qualsiasi server.
Se vedi 'myuse'[email protected]'10.20.30,%'
, allora puoi eseguire accessi remoti solo dal 10.20.30.% netblock.
Una volta che hai visto 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 controllare se la password per myuser
è whateverpassword
, puoi eseguire le seguenti operazioni:
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 sei root
e vuoi testare solo myuser, puoi farlo:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
Se ottieni 1, la password per myuser è verificata come valida.