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.cnf
dans 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_editor
utilitaire 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 client
chemin de connexion par défaut .
Vous pouvez stocker plusieurs informations d'authentification en spécifiant une --login-path
option différente :
mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password
Par défaut, le mysql
client 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-path
option, 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 mysql
client 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