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?

Voyage
la source
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.

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é.

Zoredache
la source
C'est super ça a fonctionné .. Thanku
Trip
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:

mysql_config_editor print --all=true

Plus d'informations sur l'utilitaire peuvent être trouvées dans "mysql_config_editor - MySQL Configuration Utility" .

Giovanni
la source
2

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é».

Mark Butler
la source
Alors, quelle est la réponse à cette question?
Pierre.Vriens
0

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

tjb
la source