4.2.4 Connexion au serveur MySQL à l’aide d’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 des 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 MySQL Shell, consultez la Section 4.2.5, » Connexion au serveur à l’aide de chaînes de type URI ou de paires clé-valeur « . Pour des informations supplémentaires si vous ne parvenez pas à vous connecter, consultez la Section 6.2.21, » Dépannage des problèmes de connexion à MySQL « .
Pour qu’un programme client puisse se connecter au serveur MySQL, il doit utiliser les paramètres de connexion appropriés, tels que le nom de l’hôte où le serveur est exécuté 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 soit sur la ligne de commande, soit 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 invoque 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
sur Windows ou votre nom de connexion Unix sur Unix. -
Aucun mot de passe n’est envoyé car ni
--password
ni-p
n’est donné. -
Pour mysql, le premier argument sans option est pris comme le nom de la base de données par défaut. Parce qu’il n’y a pas un tel argument, mysql ne sélectionne aucune base de données par défaut.
Pour spécifier le nom d’hôte et le nom d’utilisateur explicitement, 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 de nom de base de données. 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 une option
--password
ou-p
et spécifiez une valeur de mot de passe, il ne doit y avoir aucun espace entre--password=
ou-p
et le mot de passe qui le suit. -
Si vous utilisez
--password
ou-p
mais ne spécifiez pas de valeur de mot de passe, le programme client vous invite à saisir le mot de passe. Le mot de passe n’est pas affiché 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 pour les utilisateurs finaux concernant 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 constitue un risque de sécurité. Pour éviter ce risque, spécifiez l’option --password
ou -p
sans la valeur du mot de passe qui suit :
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 imprime une invite et attend que vous entriez 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 que MySQL utilise 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, et non de MySQL. En interne, MySQL n’a pas de limite pour la longueur du mot de passe. Pour contourner cette limitation sur les 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 de contournement consiste à changer votre mot de passe MySQL en une valeur comportant huit caractères ou moins, mais cela présente l’inconvénient que les mots de passe plus courts ont tendance à être moins sûrs.
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. -
Sur Unix, les programmes MySQL traitent le nom d’hôte
localhost
spécialement, d’une manière qui est probablement différente de ce à quoi vous vous attendez par rapport à d’autres programmes basés sur le réseau : le client se connecte en utilisant un fichier socket Unix. L’option--socket
ou la variable d’environnementMYSQL_UNIX_PORT
peuvent être utilisées pour spécifier le nom du socket.
-
-
Sur Windows, si
host
est.
(point), ou que 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 à l’aide d’un tube nommé, si le serveur a été lancé avec la variable systèmenamed_pipe
activée pour prendre en charge les connexions par tube nommé. Si les connexions par tuyau nommé ne sont pas prises en charge ou si l’utilisateur qui établit la connexion n’est pas membre du groupe Windows spécifié par la variable systèmenamed_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 le protocole de transport de manière explicite et annule les règles précédentes, même pour localhost
.
Seules les options de connexion qui sont 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
sur Unix, le client tente de se connecter au serveur local en utilisant 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, 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
. Exemples :
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 sur 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 par tube 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 par tube nommé ou si l’utilisateur établissant 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 voulez pas utiliser le nom de tuyau par défaut.
Les connexions aux serveurs distants utilisent TCP/IP. Cette commande se connecte au serveur exécuté 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 également spécifier un numéro de port pour les connexions à un serveur local. Cependant, comme indiqué précédemment, les connexions à localhost
sur Unix utilisent un fichier socket par défaut, donc à moins de forcer une connexion TCP/IP comme décrit précédemment, toute option qui spécifie un numéro de port est ignorée.
Pour cette commande, le programme utilise un fichier socket sur 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, invoquez 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 manière dont les programmes clients établissent les connexions au serveur, consultez la Section 4.2.3, « Options de commande pour la connexion au serveur ».
Il est possible de spécifier les paramètres de connexion sans les saisir sur la ligne de commande chaque fois que vous invoquez un programme client :
-
Spécifier les paramètres de connexion dans la section
d’un fichier d’options. La section pertinente du fichier pourrait 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. Exemples:
-
Pour spécifier l’hôte de mysql, utilisez
MYSQL_HOST
. -
Sur Windows, pour spécifier le nom d’utilisateur de MySQL, utilisez
USER
.
Pour une liste des variables d’environnement prises en charge, consultez la section 4.9, « Variables d’environnement ».
-
.