Autres façons d'écrire ces options.
Vous pouvez écrire
mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"
pour passer des chaînes vides comme arguments séparés. Votre commentaire ci-dessous indique que le client demandera quand même un mot de passe. Il interprète probablement l'argument vide comme un nom de base de données et non comme un mot de passe. Vous pouvez donc essayer ce qui suit à la place :
mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "SHOW DATABASES"
fichier .mon.cnf
Mais même s'il existe un moyen, je vous suggère quand même d'utiliser un ~/.my.cnf
fichier à la place. Les arguments sur la ligne de commande sont probablement inclus dans une liste de processus générée par ps -A -ocmd
, afin que les autres utilisateurs puissent les voir. Le .my.cnf
le fichier, d'autre part, peut (et devrait) être rendu lisible uniquement par vous (en utilisant chmod 0600 ~/.my.cnf
), et sera utilisé automatiquement. Demandez à ce fichier d'inclure les lignes suivantes :
[client]
user=root
password=
Puis un simple mysql -e "SHOW DATABASES"
suffira, car le client obtiendra ses informations d'identification à partir de ce fichier.
Voir 6.1.2.1. Directives de l'utilisateur final pour la sécurité des mots de passe
pour les différentes manières de fournir un mot de passe, ainsi que leurs avantages et inconvénients respectifs. Voir 4.2.3.3. Utilisation des fichiers d'options
pour des informations générales sur ce .my.cnf
fichier