web-dev-qa-db-fra.com

Tester les informations d'identification MySQL à partir de la ligne de commande Linux?

Comment testez-vous les informations d'identification MySQL à partir de la ligne de commande sur un serveur Linux?

17
Jake Wilson

@ Réponse de Phil et @ Réponse de Mr.Brownstone devrait suffire pour votre question, donc +1 pour les deux.

Pour les éléments suivants, supposons que vous vous connectez avec le nom d'utilisateur myuser

Une fois connecté à mysql, vous devez exécuter la requête suivante:

SELECT USER(),CURRENT_USER();
  • SER () indique comment vous avez tenté de vous authentifier dans MySQL
  • CURRENT_USER () indique comment vous avez été autorisé à vous authentifier dans MySQL

Parfois, ils sont différents. Cela peut vous expliquer pourquoi vous êtes autorisé à vous connecter à mysql.

Voici une autre requête que vous devez exécuter:

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

Cela vous montrera les façons dont vous êtes autorisé à vous connecter en tant que myuser.

Si tu vois 'myuser'@'localhost', vous pouvez alors vous authentifier à partir du serveur DB.

Si tu vois 'myuser'@'127.0.0.1' et ne voient pas 'myuser'@'localhost', vous pouvez à nouveau vous authentifier à partir du serveur DB, mais vous devez spécifier le --protocol=tcp depuis la ligne de commande.

Si tu vois 'myuser'@'%', vous pouvez alors vous connecter à distance à partir de n'importe quel serveur.

Si tu vois 'myuse'r@'10.20.30,%', vous pouvez alors effectuer des connexions à distance uniquement à partir de 10.20.30.% netblock.

Une fois que vous voyez ce que 'mysql.user' a pour votre utilisateur, vous pouvez autoriser ou restreindre myuser de logggin d'une manière et non de l'autre.

Si vous souhaitez simplement vérifier si le mot de passe de myuser est whateverpassword, vous pouvez procéder comme suit:

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

Vous pouvez vérifier à partir de la ligne de commande comme suit:

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

Si vous n'êtes pas root et que vous souhaitez tester mon utilisateur uniquement, vous pouvez le faire:

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

Si vous obtenez 1, le mot de passe de myuser est vérifié comme bon.

5
RolandoMySQLDBA
mysql -h Host -u user -p<whatever> -e"quit"

Cela vous permet d'utiliser la même chaîne de connexion que vous utilisez pour envoyer par programme des requêtes au serveur. Vous pouvez ajouter || exit 1 jusqu'à la fin pour quitter automatiquement les arguments non valides. Vous pouvez également rediriger stderr vers /dev/null si vous n'aimez pas le message d'erreur MySQL généré automatiquement.

13
CSTobey

Vous pouvez utiliser la commande suivante (en supposant que vous avez configuré mysql dans votre PATH):

mysql -h Hôte -u utilisateur -p

Remplacez simplement Host et ser par les valeurs correctes, puis vous devriez être invité à entrer votre mot de passe.

6
Mr.Brownstone
mysql --user=user_name --password=your_password dbname

Votre question est-elle aussi simple ou existe-t-il un cas spécifique que vous devez tester?

2
Philᵀᴹ