J'utilise le client de ligne de commande mysql et je ne veux pas avoir à fournir le mot de passe à chaque démarrage du client. Quelles sont mes options?
J'utilise le client de ligne de commande mysql et je ne veux pas avoir à fournir le mot de passe à chaque démarrage du client. Quelles sont mes options?
Réponses:
Créez un fichier nommé .my.cnfdans votre répertoire personnel qui ressemble à ceci. Assurez-vous que les autorisations du système de fichiers sont définies de telle sorte que seul l'utilisateur propriétaire peut le lire (0600).
[client]
host = localhost
user = username.
password = thepassword
socket = /var/run/mysqld/mysqld.sock
#database = mysql
Puisque vous avez également tagué votre question mysqldump, vous devriez regarder cette question.
Utiliser mysqldump dans un travail cron sans mot de passe root
Mise à jour (2016-06-29) Si vous exécutez mysql 5.6.6 ou une version ultérieure, vous devez consulter l' outil mysql_config_editor qui vous permet de stocker les informations d'identification dans un fichier crypté. Merci à Giovanni de m'en avoir parlé.
Vous pouvez utiliser l' mysql_config_editorutilitaire pour stocker les informations d'authentification dans un fichier de chemin de connexion chiffré nommé .mylogin.cnf.
Pour créer un nouvel ensemble d'informations d'identification, exécutez:
mysql_config_editor set --host=db.host.org --user=dbuser --password
et entrez votre mot de passe lorsque vous y êtes invité.
Cela stockera vos informations d'authentification dans le clientchemin de connexion par défaut .
Vous pouvez stocker plusieurs informations d'authentification en spécifiant une --login-pathoption différente :
mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password
Par défaut, le mysqlclient lit les groupes [client]et à [mysql]partir d'autres fichiers d'options, il les lit donc également à partir du fichier de chemin de connexion. Avec une --login-pathoption, les programmes clients lisent en outre le chemin de connexion nommé dans le fichier de chemin de connexion. Les groupes d'options lus à partir d'autres fichiers d'options restent les mêmes. Considérez cette commande:
mysql --login-path=db2
Le mysqlclient lit [client]et [mysql]d'autres fichiers d'options, et [client], [mysql]et à [mypath]partir du fichier de chemin de connexion.
Pour imprimer toutes les informations stockées dans le fichier de configuration, exécutez:
mysql_config_editor print --all=true
Plus d'informations sur l'utilitaire peuvent être trouvées dans "mysql_config_editor - MySQL Configuration Utility" .
Nous ne devons pas prétendre que le .mylogin.cnf est sécurisé du tout car je peux utiliser my_print_defaults -s [use your login-path]pour faire apparaître ce mot de passe en texte clair. C'est pourquoi MariaDB ne prend pas en charge cette approche de «sécurité par obscurité».
Il existe un autre moyen, orthogonal aux méthodes mentionnées ci-dessus, mais cela peut constituer un risque pour la sécurité si quelqu'un d'autre regarde votre moniteur, OU si vous sauvegardez votre historique .
Néanmoins, c'est une option, qui vous évitera d'être invité, et celle que j'utilise dans les images de docker jetables et autres ...
mysql -u YOUR_USER --password=YOUR_PASSWORD_HERE your_database -e "your query" etc.
Vous ne serez pas invité, vous pouvez définir un alias temporaire dans le shell si vous le souhaitez.
Utiliser avec précaution.
mysql Ver 14.14 Distrib 5.5.61-38.13, pour debian-linux-gnu (x86_64) utilisant readline 5.1