Apakah mungkin untuk mengkonfigurasi kata sandi per basis data atau per host di .my.cnf

47

Saya memiliki yang berikut di blog saya ~/.my.cnf

[client]
password="somepass"

tapi ini bukan kata sandi yang saya gunakan untuk setiap pengguna @ host / basis data yang saya sambungkan. Apakah ada cara untuk menentukan dalam konfigurasi kata sandi yang berbeda untuk hal-hal yang berbeda sehingga saya tidak perlu mengetiknya?

xenoterracide
sumber
[Pengguna @DTest menjawab pertanyaan seperti ini di bulan Mei tahun ini] [1] [1]: dba.stackexchange.com/questions/2820/…
RolandoMySQLDBA

Jawaban:

64

Seperti yang saya jawab di sini , Anda dapat menambahkan bagian untuk setiap pengguna / host / db yang Anda hubungkan menggunakan sintaks di ~/.my.cnf:

[clienthost1]   # Note: client + host1
user=myuser
password=mypass
database=dbname
host=server.location.com

Setelah ini ada di pengguna .my.cnfAnda, Anda dapat menggunakannya dengan melakukan ini pada baris perintah:

$ mysql --defaults-group-suffix=host1
Derek Downey
sumber
Seperti yang dijanjikan, +1 !!!
RolandoMySQLDBA
Bisakah Anda jelaskan --defaults-group-suffix ini?
Otheus
Bagus. Butuh beberapa saat untuk mencari tahu sisanya dari sini tetapi untuk backup mysql Cron, sekarang saya dapat menggunakan mysqldump --defaults-group-suffix = host1 -P 3306 -h 111.0.0.xxx --ssl -u db_usr db_name > / home / myaccount / backups / db_name _ $ (echo $ (date '+ \% Y \% m \% d'). sql.gz) untuk membuat cadangan yang di-gzip. Terima kasih!
user1324409
Catatan: Jika Anda menempatkan ini dalam my.cnf global, seperti /etc/mysql/my.cnf, namun memiliki user-didefinisikan .my.cnfdengan [client]dirumuskan, yang terakhir akan menggantikan pengaturan dalam file global! boo.
Otheus
Perhatikan bahwa halaman manual MariaDB secara salah menyatakan bahwa sufiks xakan membaca bagian tersebut [client_x]tetapi pada kenyataannya Anda membutuhkan sufiks _xuntuk itu
Daniel Böhmer
8

Tidak disarankan memasukkan kata sandi yang jelas dalam file teks karena mysql 5.6.6.

Anda dapat menggunakan mysql_config_editoruntuk menyimpan kata sandi yang dienkripsi juga untuk memberikan kata sandi yang berbeda untuk koneksi yang berbeda https://dev.mysql.com/doc/refman/5.6/id/mysql-config-editor.html

PerroVerd
sumber
3
Keamanan tidak jelas ...
Federico Razzoli
+1 untuk menyebutkan mysql_config_editor
RolandoMySQLDBA
1
Sampai program ini (1) di-backport ke versi sebelumnya, (2) memungkinkan penyebaran kata sandi otomatis (yaitu, tidak memaksa kata sandi untuk dibaca di TTY), saya tidak merekomendasikan metode ini.
Otheus
Apakah MariaDB memiliki dukungan atau fitur yang sebanding agar sesuai dengan mysql_config_editor?
Jeremy Hajek
@JeremyHajek Tidak, tidak, dan kemungkinan tidak akan pernah karena dev MariaDB menunjukkan bahwa hanya memberikan rasa palsu peningkatan keamanan: MySQL 5.6: Keamanan melalui Complacency?
Bloodgain
8

Jawaban lainnya benar. Sayangnya mysqladmintidak mendukung --defaults-group-suffix(setidaknya bukan versi yang saya gunakan).

Karenanya saya memilih menggunakan --defaults-file=HOST.cnf, yang berfungsi untuk mysql, mysqladmindan mysqldump.

keuangan fifi
sumber
2
Menambahkan ini ke .bash_profile saya membuatnya lebih mudah:alias my-host='mysql --defaults-file=HOST.cnf'
spyle