Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment se connecter automatiquement à MySQL à partir d'un script shell ?

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