Stockez le mot de passe du client MySQL ou configurez le mot de passe sans authentification
11
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?
Veuillez accepter les réponses à certaines de vos questions précédentes, car il semble que plusieurs de ces réponses étaient des solutions correctes - cliquez sur la coche indiquée à gauche de la réponse.
Shane Madden
Réponses:
15
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.
Si la réponse a résolu votre problème, vous devez cliquer sur la coche pour l'accepter.
Zoredache
1
Cela stockera le mot de passe en texte brut, une pratique que je découragerais d'un point de vue de la sécurité.
Giovanni
@Giovanni bien sûr, bien que le mysql_config_editor que vous mentionnez dans votre réponse, bien qu'utile, n'est pas disponible jusqu'à ce que vous exécutiez 5.6.6. Il existe encore aujourd'hui des distributions qui ont des versions plus anciennes.
Zoredache
Mais comment cela se fait-il sous Windows?
Wolfpack'08
9
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:
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
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).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é.
la source
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:
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 :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: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:
Plus d'informations sur l'utilitaire peuvent être trouvées dans "mysql_config_editor - MySQL Configuration Utility" .
la source
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é».la source
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 ...
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
la source