Comment testez-vous les informations d'identification MySQL à partir de la ligne de commande sur un serveur Linux?
la source
Comment testez-vous les informations d'identification MySQL à partir de la ligne de commande sur un serveur Linux?
@ Réponse de Phil et @ Réponse de Mr.Brownstone devrait suffire à votre question, donc +1 pour les deux d'entre eux.
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();
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 vous voyez 'myuser'@'localhost'
, alors vous pouvez vous authentifier à partir du serveur DB.
Si vous voyez 'myuser'@'127.0.0.1'
et ne voyez pas 'myuser'@'localhost'
, vous pouvez à nouveau vous authentifier à partir du serveur DB, mais vous devez spécifier le à --protocol=tcp
partir de la ligne de commande.
Si vous voyez 'myuser'@'%'
, vous pouvez alors vous connecter à distance à partir de n'importe quel serveur.
Si vous voyez 'myuse'r@'10.20.30,%'
, alors vous pouvez uniquement effectuer des connexions à distance à 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 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 ne l'êtes pas root
et que vous souhaitez tester myuser 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.
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
à 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.
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 l' hôte et l' utilisateur par les valeurs correctes, puis vous devriez être invité à entrer votre mot de passe.
Votre question est-elle aussi simple ou existe-t-il un cas spécifique que vous devez tester?
la source