MySQL équivalent à .pgpass, ou authentification automatique dans un travail cron pour mySQL

8

J'écris un script bash pour sauvegarder mes bases de données. La plupart sont postgresql, et dans postgres il y a un moyen d'éviter d'avoir à s'authentifier en créant un fichier ~ / .pgpass qui contient le mot de passe postgres. Je l'ai mis dans le répertoire personnel de root et je l'ai créé chmod 0600, afin que root puisse vider les bases de données postgres sans avoir à s'authentifier. Maintenant, je veux faire quelque chose de similaire pour mysql, même si je n'ai qu'une seule base de données mysql. Comment puis-je faire ceci? Je ne veux pas spécifier le mot de passe sur la ligne de commande pour mysqldump car cela fait partie d'un script qui pourrait être quelque peu visible par les autres utilisateurs. Existe-t-il un meilleur moyen (c'est-à-dire intégré à mysql) de faire cela que de créer un fichier que seul root peut lire puis lire pour obtenir le mot de passe mysql, puis l'utiliser dans le script bash comme variable?

Ibrahim
la source
Hmm, étrangement, j'ai trouvé quelque chose de prometteur via Google plutôt que la propre recherche de serverfault: stackoverflow.com/questions/601995/…
Ibrahim
Ouais bh, apparemment ma recherche-fu manque.
Ibrahim

Réponses:

6

Créez un ~/.my.cnffichier pour l'utilisateur exécutant mysql. Il doit contenir les éléments suivants:

[client]
user = root
password = yourpassword
Warner
la source
Je suppose qu'une chose à ajouter est que si vous exécutez le script à l'aide de sudo, vous devez utiliser -H pour vous assurer qu'il utilise le répertoire personnel de root. Mais je pense que ce problème ne devrait pas être un problème dans un travail cron racine, n'est-ce pas?
Ibrahim
3
Mais comment cela est-il géré pour plusieurs comptes? Cela fonctionnera pour localhost, mais que se passe-t-il si je veux stocker mes informations de connexion pour un serveur distant?
Cerin