Simpan kata sandi klien MySQL, atau setel kata sandi dengan otentikasi kurang

11

Saya menggunakan klien baris perintah mysql dan saya tidak ingin perlu memberikan kata sandi setiap kali saya memulai klien. Apa saja pilihan saya?

Perjalanan
sumber
Harap terima jawaban atas beberapa pertanyaan Anda sebelumnya, karena tampaknya beberapa dari jawaban itu adalah solusi yang benar - klik tanda centang yang diuraikan di sebelah kiri jawaban.
Shane Madden

Jawaban:

15

Buat file bernama .my.cnfdi direktori home Anda yang terlihat seperti ini. Pastikan hak akses filesystem diatur sedemikian sehingga hanya pengguna yang dapat membacanya (0600).

[client]
host     = localhost
user     = username.
password = thepassword
socket   = /var/run/mysqld/mysqld.sock
#database = mysql

Karena Anda juga menandai pertanyaan saya mysqldump, Anda harus melihat pertanyaan ini.

Menggunakan mysqldump dalam pekerjaan cron tanpa kata sandi root

Pembaruan (2016-06-29) Jika Anda menjalankan mysql 5.6.6 atau lebih tinggi, Anda harus melihat alat mysql_config_editor yang memungkinkan Anda untuk menyimpan kredensial dalam file terenkripsi. Terima kasih kepada Giovanni karena menyebutkan ini padaku.

Sakit kepala
sumber
Ini hebat, itu berhasil .. Terima kasih
Perjalanan
Jika jawabannya memecahkan masalah Anda, maka Anda harus mengklik tanda centang untuk menerimanya.
Zoredache
1
Ini akan menyimpan kata sandi sebagai teks biasa, sebuah praktik yang saya tidak ingin dari sudut pandang keamanan.
Giovanni
@Giovanni yakin, meskipun mysql_config_editor yang Anda sebutkan dalam jawaban Anda, sementara berguna tidak tersedia sampai Anda menjalankan 5.6.6. Masih ada distribusi hari ini yang memiliki versi yang lebih lama.
Zoredache
Tetapi bagaimana ini dilakukan pada Windows?
Wolfpack'08
9

Anda dapat menggunakan mysql_config_editorutilitas untuk menyimpan kredensial autentikasi dalam file jalur masuk terenkripsi yang bernama .mylogin.cnf.

Untuk membuat set kredensial baru jalankan:

mysql_config_editor set --host=db.host.org --user=dbuser --password

dan masukkan kata sandi Anda saat diminta.

Ini akan menyimpan kredensial autentikasi Anda di clientjalur login default .

Anda dapat menyimpan beberapa kredensial autentikasi dengan menentukan --login-pathopsi yang berbeda :

mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password

Secara default, mysqlklien membaca [client]dan [mysql]grup dari file opsi lain, sehingga membacanya dari file jalur login juga. Dengan --login-pathopsi, program klien juga membaca jalur masuk yang disebutkan dari file jalur masuk. Grup opsi membaca dari file opsi lain tetap sama. Pertimbangkan perintah ini:

mysql --login-path=db2

The mysqlklien membaca [client]dan [mysql]dari file pilihan lain, dan [client], [mysql], dan [mypath]dari file path login.

Untuk mencetak semua informasi yang tersimpan dalam file konfigurasi jalankan:

mysql_config_editor print --all=true

Informasi lebih lanjut tentang utilitas dapat ditemukan di "mysql_config_editor - MySQL Configuration Utility" .

Giovanni
sumber
2

Kita tidak boleh berpura-pura bahwa .mylogin.cnf aman sama sekali karena saya dapat menggunakan my_print_defaults -s [use your login-path]untuk membuat kata sandi itu muncul dalam teks biasa. Inilah sebabnya mengapa MariaDB tidak mendukung pendekatan 'keamanan karena ketidakjelasan' ini.

Mark Butler
sumber
Jadi apa adalah jawaban untuk pertanyaan ini kemudian?
Pierre.Vriens
0

Ada cara lain, ortogonal dengan metode yang disebutkan di atas, tetapi bisa menjadi risiko keamanan jika orang lain menonton monitor Anda, ATAU jika Anda menyimpan riwayat Anda .

Namun demikian itu adalah pilihan, yang akan mencegah Anda dari diminta, dan salah satu yang saya gunakan dalam gambar buruh pelabuhan yang dibuang begitu saja ....

mysql -u YOUR_USER --password=YOUR_PASSWORD_HERE your_database -e "your query" etc.

Anda tidak akan diminta, Anda dapat mengatur alias sementara di shell jika Anda mau.

Gunakan dengan hati-hati.

mysql Ver 14.14 Distrib 5.5.61-38.13, untuk debian-linux-gnu (x86_64) menggunakan readline 5.1

tjb
sumber