MySQL::MySQL 8.0 Manuel de référence :: 4.2.4 Connexion au Serveur MySQL À l’aide des Options de commande

4.2.4 Connexion au Serveur MySQL à l’aide des Options de commande

Cette section décrit l’utilisation des options de ligne de commande pour spécifier comment établir des connexions au serveur MySQL, pour des clients tels que mysql ou mysqldump. Pour plus d’informations sur l’établissement de connexions à l’aide de chaînes de connexion de type URI ou de paires clé-valeur, pour des clients tels que le shell MySQL, reportez-vous à la section 4.2.5,  » Connexion au serveur à l’aide de chaînes de connexion de type URI ou de paires Clé-Valeur ”. Pour plus d’informations si vous ne parvenez pas à vous connecter, reportez-vous à la section 6.2.21, « Dépannage des problèmes de connexion à MySQL”.

Pour qu’un programme client se connecte au serveur MySQL, il doit utiliser les paramètres de connexion appropriés, tels que le nom de l’hôte sur lequel le serveur s’exécute et le nom d’utilisateur et le mot de passe de votre compte MySQL. Chaque paramètre de connexion a une valeur par défaut, mais vous pouvez remplacer les valeurs par défaut si nécessaire en utilisant les options du programme spécifiées sur la ligne de commande ou dans un fichier d’options.

Les exemples ici utilisent le programme client mysql, mais les principes s’appliquent à d’autres clients tels que mysqldump, mysqladmin ou mysqlshow.

Cette commande appelle mysql sans spécifier de paramètres de connexion explicites :

mysql

Comme il n’y a pas d’options de paramètres, les valeurs par défaut s’appliquent :

  • Le nom d’hôte par défaut est localhost. Sous Unix, cela a une signification particulière, comme décrit plus loin.

  • Le nom d’utilisateur par défaut est ODBC sous Windows ou votre nom de connexion Unix sous Unix.

  • Aucun mot de passe n’est envoyé car ni --password ni -p n’est donné.

  • Pour mysql, le premier argument nonoption est pris comme nom de la base de données par défaut. Comme il n’y a pas d’argument de ce type, mysql ne sélectionne aucune base de données par défaut.

Pour spécifier explicitement le nom d’hôte et le nom d’utilisateur, ainsi qu’un mot de passe, fournissez les options appropriées sur la ligne de commande. Pour sélectionner une base de données par défaut, ajoutez un argument database-name. Exemples :

mysql --host=localhost --user=myname --password=password mydbmysql -h localhost -u myname -ppassword mydb

Pour les options de mot de passe, la valeur du mot de passe est facultative :

  • Si vous utilisez un --password ou -poption et spécifiez une valeur de mot de passe, il ne doit pas y avoir d’espace entre --password= ou -p et le mot de passe qui le suit.

  • Si vous utilisez --password ou -p mais que vous ne spécifiez pas de valeur de mot de passe, le programme client vous invite à entrer le mot de passe. Le mot de passe ne s’affiche pas lorsque vous le saisissez. C’est plus sûr que de donner le mot de passe sur la ligne de commande, ce qui pourrait permettre à d’autres utilisateurs de votre système de voir la ligne de mot de passe en exécutant une commande telle que ps. Voir la Section 6.1.2.1,  » Directives de l’Utilisateur Final pour la sécurité des mots de passe ”.

  • Pour spécifier explicitement qu’il n’y a pas de mot de passe et que le programme client ne doit pas en demander un, utilisez l’option --skip-password.

Comme nous venons de le mentionner, inclure la valeur du mot de passe sur la ligne de commande est un risque de sécurité. Pour éviter ce risque, spécifiez l’option --password ou -p sans valeur de mot de passe suivante:

mysql --host=localhost --user=myname --password mydbmysql -h localhost -u myname -p mydb

Lorsque l’option --password ou -p est donnée sans valeur de mot de passe, le programme client affiche une invite et attend que vous entrez le mot de passe. (Dans ces exemples, mydb n’est pas interprété comme un mot de passe car il est séparé de l’option de mot de passe précédente par un espace.)

Sur certains systèmes, la routine de bibliothèque utilisée par MySQL pour demander un mot de passe limite automatiquement le mot de passe à huit caractères. Cette limitation est une propriété de la bibliothèque système, pas de MySQL. En interne, MySQL n’a aucune limite pour la longueur du mot de passe. Pour contourner la limitation des systèmes concernés, spécifiez votre mot de passe dans un fichier d’options (voir Section 4.2.2.2, « Utilisation des fichiers d’options”). Une autre solution consiste à changer votre mot de passe MySQL en une valeur de huit caractères ou moins, mais qui présente l’inconvénient que les mots de passe plus courts ont tendance à être moins sécurisés.

Les programmes clients déterminent le type de connexion à établir comme suit:

  • Si l’hôte n’est pas spécifié ou est localhost, une connexion à l’hôte local se produit :

    • Sous Windows, le client se connecte en utilisant la mémoire partagée, si le serveur a été démarré avec la variable système shared_memory activée pour prendre en charge les connexions en mémoire partagée.

    • Sous Unix, les programmes MySQL traitent le nom d’hôte localhostspécialement, d’une manière probablement différente de ce à quoi vous vous attendez par rapport aux autres programmes en réseau: le client se connecte à l’aide d’un fichier socket Unix. L’option --socket ou la variable d’environnement MYSQL_UNIX_PORT peuvent être utilisées pour spécifier le nom du socket.

  • Sous Windows, si host est . (période), ou si TCP/IP n’est pas activé et que --socket n’est pas spécifié ou que l’hôte est vide, le client se connecte en utilisant un tuyau nommé, si le serveur a été démarré avec la variable système named_pipe activée pour prendre en charge les connexions de tuyau nommé. Si les connexions named-pipe ne sont pas prises en charge ou si l’utilisateur effectuant la connexion n’est pas membre du groupe Windows spécifié par la variable système named_pipe_full_access_group, une erreur se produit.

  • Sinon, la connexion utilise TCP/IP.

L’option --protocol vous permet d’utiliser un protocole de transport particulier même lorsque d’autres options entraînent normalement l’utilisation d’un protocole différent. Autrement dit, --protocol spécifie explicitement le protocole de transport et remplace les règles précédentes, même pour localhost.

Seules les options de connexion pertinentes pour le protocole de transport 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 au serveur local à l’aide d’un fichier de 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 au serveur 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 explicitement le protocole de transport, même pour localhost, en utilisant l’option --protocol=TCP. Exemple:

mysql --host=127.0.0.1mysql --protocol=TCP

Si le serveur est configuré pour accepter les connexions IPv6, les clients peuvent se connecter au serveur local via IPv6 en utilisant --host=::1. Voir la section 5.1.13,  » Prise en charge d’IPv6″.

Sous Windows, pour forcer un client MySQL à utiliser une connexion de canal nommé, spécifiez l’option --pipe ou --protocol=PIPE, ou spécifiez . (point) comme nom d’hôte. Si le serveur n’a pas été démarré avec la variable système named_pipe activée pour prendre en charge les connexions de tuyaux nommés ou si l’utilisateur effectuant la connexion n’est pas membre du groupe Windows spécifié par la variable système named_pipe_full_access_group, une erreur se produit. Utilisez l’option --socket pour spécifier le nom du tuyau si vous ne souhaitez pas utiliser le nom du tuyau par défaut.

Les connexions aux serveurs distants utilisent TCP/IP. Cette commande se connecte au serveur s’exécutant sur remote.example.com en utilisant le numéro de port par défaut (3306):

mysql --host=remote.example.com

Pour spécifier explicitement un numéro de port, utilisez l’option --port ou -P :

mysql --host=remote.example.com --port=13306

Vous pouvez spécifier un numéro de port pour les connexions à un serveur local aussi. Cependant, comme indiqué précédemment, les connexions à localhost sous Unix utilisent un fichier socket par défaut, donc à moins que vous ne forciez une connexion TCP/IP comme décrit précédemment, toute option spécifiant un numéro de port est ignorée.

Pour cette commande, le programme utilise un fichier socket sous Unix et l’option --port est ignorée :

mysql --port=13306 --host=localhost

Pour que le numéro de port soit utilisé, forcez une connexion TCP/IP. Par exemple, appelez le programme de l’une des manières suivantes :

mysql --port=13306 --host=127.0.0.1mysql --port=13306 --protocol=TCP

Pour plus d’informations sur les options qui contrôlent la façon dont les programmes clients établissent des connexions au serveur, voir Section 4.2.3,  » Options de commande pour la connexion au serveur”.

Il est possible de spécifier des paramètres de connexion sans les saisir sur la ligne de commande chaque fois que vous appelez un programme client :

  • Spécifiez les paramètres de connexion dans la section d’un fichier d’options. La section appropriée du fichier peut ressembler à ceci :

    host=host_nameuser=user_namepassword=password

    Pour plus d’informations, consultez la section 4.2.2.2, « Utilisation des fichiers d’options”.

  • Certains paramètres de connexion peuvent être spécifiés à l’aide de variables d’environnement. Exemple:

    • Pour spécifier l’hôte pour mysql, utilisez MYSQL_HOST.

    • Sous Windows, pour spécifier le nom d’utilisateur MySQL, utilisez USER.

    Pour une liste des variables d’environnement prises en charge, voir Section 4.9,  » Variables d’environnement”.



Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.