MySQL setara dengan .pgpass, atau autentikasi otomatis dalam tugas cron untuk mySQL

8

Saya sedang menulis skrip bash untuk mencadangkan basis data saya. Kebanyakan postgresql, dan di postgres ada cara untuk menghindari keharusan mengotentikasi dengan membuat file ~ / .pgpass yang berisi kata sandi postgres. Saya meletakkan ini di direktori home root dan membuatnya chmod 0600, sehingga root dapat membuang database postgres tanpa harus mengotentikasi. Sekarang saya ingin melakukan sesuatu yang serupa untuk mysql, walaupun saya hanya punya satu database mysql. Bagaimana saya bisa melakukan ini? Saya tidak ingin menentukan kata sandi pada baris perintah untuk mysqldump karena ini adalah bagian dari skrip yang mungkin terlihat oleh pengguna lain. Apakah ada cara yang lebih baik (yaitu built in ke mysql) untuk melakukan ini daripada membuat file yang hanya dapat dibaca oleh root dan kemudian membacanya untuk mendapatkan kata sandi mysql, dan kemudian menggunakannya dalam skrip bash sebagai variabel?

Ibrahim
sumber
Hmm, anehnya, saya menemukan sesuatu yang menjanjikan melalui pencarian google daripada serverfault sendiri: stackoverflow.com/questions/601995/…
Ibrahim
Ya bleh, tampaknya pencarian-fu saya kurang.
Ibrahim

Jawaban:

6

Buat ~/.my.cnffile untuk pengguna yang menjalankan mysql. Ini harus berisi yang berikut:

[client]
user = root
password = yourpassword
Warner
sumber
Satu hal yang saya tambahkan adalah jika menjalankan skrip menggunakan sudo, Anda perlu menggunakan -H untuk memastikan bahwa ia menggunakan direktori home root. Tapi saya pikir masalah itu seharusnya tidak menjadi masalah dalam pekerjaan root cron, benar?
Ibrahim
3
Tetapi bagaimana hal itu ditangani untuk banyak akun? Itu akan bekerja untuk localhost, tetapi bagaimana jika saya ingin menyimpan login saya untuk server jauh?
Cerin