118 votes

Pourquoi l'outil de ligne de commande MySQL ignore-t-il le paramètre --port ?

C'est ce que je fais :

mysql --host=localhost --port=9999 mysql -u root -p --execute="show tables;"

La commande fonctionne (connexion au port 3306), peu importe ce que je fournis dans le champ --port argument. J'ai deux serveurs mysql fonctionnant sur une machine, et je veux me connecter au second en fournissant explicitement son numéro de port. Que se passe-t-il ? Pourquoi mysql ignorer ce paramètre ?

207voto

abeger Points 1825

Quand localhost donné, MySQL utilise les sockets. Utiliser 127.0.0.1 à la place.

22 votes

Il est assez exaspérant que ce fait ne soit pas mentionné sur la page de manuel de mysql.

2 votes

En plus de la réponse acceptée ici, un peu plus d'explications peuvent être trouvées dans ceci rapport de bogue mysql et également un lien vers page de manuel . Comme l'un des commentateurs de la page de rapport de bogue, je ne comprends pas non plus pourquoi le client n'affiche pas au moins un avertissement en cas d'utilisation de 'localhost' dans la chaîne de connexion.

3 votes

Tu es un sauveur de vies, mec !

1voto

Donghua Liu Points 121

Seulement les options de connexion qui sont pertinentes pour le transport sélectionné sélectionné sont utilisées ou cochées. Les autres options de connexion sont ignorées. Par exemple, avec --host=localhost sous Unix, le client tente de se connecter à tente de se connecter au serveur local à l'aide d'un fichier socket Unix, même si une option --port ou -P est donnée pour spécifier un numéro de port TCP/IP.

Pour s'assurer que le client établit une connexion TCP/IP avec le serveur local local, utilisez --host ou -h pour spécifier une valeur de nom d'hôte de 127.0.0.1 (au lieu de localhost), ou l'adresse IP ou le nom du serveur local. Vous pouvez également spécifier le protocole de transport de manière explicite, même dans le cas de localhost, en utilisant l'option --protocol=TCP. Exemples :

mysql --host=127.0.0.1

mysql --protocole=TCP

https://dev.mysql.com/doc/refman/8.0/en/connecting.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X