Karena Anda menggunakan Ubuntu, yang perlu Anda lakukan hanyalah menambahkan file di direktori home Anda dan itu akan menonaktifkan prompt kata sandi mysqldump. Ini dilakukan dengan membuat file ~/.my.cnf
(izin harus 600).
Tambahkan ini ke file .my.cnf
[mysqldump]
user=mysqluser
password=secret
Ini memungkinkan Anda terhubung sebagai pengguna MySQL yang membutuhkan kata sandi tanpa harus benar-benar memasukkan kata sandi. Anda bahkan tidak memerlukan -p atau --password.
Sangat berguna untuk scripting perintah mysql & mysqldump.
Langkah-langkah untuk mencapai ini dapat ditemukan di tautan ini .
Atau, Anda dapat menggunakan perintah berikut:
mysqldump -u [user name] -p[password] [database name] > [dump file]
tetapi perlu diketahui bahwa itu inheren tidak aman, karena seluruh perintah (termasuk kata sandi) dapat dilihat oleh pengguna lain pada sistem saat dump sedang berjalan, dengan ps ax
perintah sederhana .
--defaults-file
. Seperti `mysqldump --defaults-file = my_other.cnf --print-defaults`~/.my.cnf
. Lihat stackoverflow.com/a/14653239/470749 . MySql mengharapkan milik saya berada dic:\wamp\bin\mysql\mysql5.5.24\my.cnf
. Jadi saya membuat file di sana. Restart Mysql tidak diperlukan; itu bekerja segera untuk mysqldump saya berikutnya.GRANT LOCK TABLES, SELECT ON *.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';
Menambahkan ke jawaban @ Frankline:
The
-p
pilihan harus dikeluarkan dari perintah untuk menggunakan password pada file konfigurasi.Benar:
mysqldump –u my_username my_db > my_db.sql
Salah:
mysqldump –u my_username -p my_db > my_db.sql
.my.cnf
dapat menghilangkan nama pengguna.Jika
.my.cnf
file Anda tidak di lokasi default danmysqldump
tidak melihatnya, tentukan dengan menggunakan--defaults-file
.mysqldump --defaults-file=/path-to-file/.my.cnf –u my_username my_db > my_db.sql
sumber
Beberapa jawaban menyebutkan meletakkan kata sandi dalam file konfigurasi.
Atau, dari skrip Anda, Anda bisa
export MYSQL_PWD=yourverysecretpassword
.Kelebihan metode ini dalam menggunakan file konfigurasi adalah Anda tidak perlu file konfigurasi terpisah untuk tetap sinkron dengan skrip Anda. Anda hanya memiliki skrip untuk dipelihara.
Tidak ada kerugian untuk metode ini.
Kata sandi tidak terlihat oleh pengguna lain di sistem (itu akan terlihat jika ada di baris perintah). Variabel lingkungan hanya terlihat oleh pengguna yang menjalankan perintah mysql, dan root.
Kata sandi juga akan terlihat oleh siapa saja yang dapat membaca skrip itu sendiri, jadi pastikan skrip itu sendiri terlindungi. Ini sama sekali tidak berbeda dengan melindungi file konfigurasi. Anda masih dapat sumber kata sandi dari file terpisah jika Anda ingin agar skrip dapat dibaca
export MYSQL_PWD=$(cat /root/mysql_password)
untuk umum ( misalnya). Masih lebih mudah untuk mengekspor variabel daripada membangun file konfigurasi.Misalnya,
sumber
export MYSQL_PWD=...
tidak tidak muncul dalam daftar proses. Bahkan untuk sepersekian detik. Ini karenaexport
perintahnya adalah (dan harus) shell builtin. Dengan demikian shell tidak melakukan proses dengan argumen perintah jika Anda menjalankannya di shell Anda.Untuk menggunakan file yang ada di mana saja di dalam OS, gunakan
--defaults-extra-file
misalnya:Catatan:
.sqlpwd
hanya nama file contoh. Anda dapat menggunakan apa pun yang Anda inginkan.Catatan: MySQL akan secara otomatis memeriksa
~/.my.cnf
mana yang dapat digunakan--defaults-extra-file
Jika Anda menggunakan CRON seperti saya, coba ini!
Izin yang Diperlukan dan Kepemilikan yang Disarankan
.sqlpwd
isi:Contoh lain untuk masuk
.cnf
atau.sqlpwd
Jika Anda ingin masuk ke database secara otomatis, Anda perlu
[mysql]
entri misalnya.Anda sekarang dapat membuat alias yang secara otomatis menghubungkan Anda ke DB
Anda juga hanya bisa memasukkan kata sandi di dalam
.sqlpwd
dan meneruskan nama pengguna melalui skrip / cli. Saya tidak yakin apakah ini akan meningkatkan keamanan atau tidak, itu akan menjadi pertanyaan yang berbeda secara bersamaan.Demi kelengkapan saya akan menyatakan Anda dapat melakukan hal berikut, tetapi sangat tidak aman dan tidak boleh digunakan dalam lingkungan produksi:
Catatan: TIDAK ADA RUANG antara -p dan kata sandi.
Misalnya
-pPassWord
benar sementara-p Password
salah.sumber
Ya itu sangat mudah .... hanya dalam satu baris perintah magis tidak ada lagi
dan selesai :)
sumber
Bagi saya, menggunakan MariaDB saya harus melakukan ini: Tambahkan file
~/.my.cnf
dan ubah izin dengan melakukanchmod 600 ~/.my.cnf
. Kemudian tambahkan kredensial Anda ke file. Bagian ajaib yang saya lewatkan adalah bahwa kata sandi harus berada di bawah blok klien (ref: docs ), seperti:Jika Anda datang ke sini mencari cara melakukan mysqldump dengan MariaDB. Tempatkan kata sandi di bawah blok [klien], dan kemudian pengguna di bawah blok [mysqldump].
sumber
[mysqldump]
bagian dan itu bekerja tanpa masalah. Ubuntu 18,04 LTSBerikut ini adalah solusi untuk Docker dalam skrip / bin / sh:
Ganti
[MYSQL_CONTAINER_NAME]
dan pastikan variabel lingkunganMYSQL_ROOT_PASSWORD
diatur dalam wadah Anda.Semoga ini akan membantu Anda seperti itu bisa membantu saya!
sumber
Saya punya yang berikut ini.
/ etc / mysqlpwd
Dengan alias berikut ini.
Untuk melakukan pemulihan saya cukup menggunakan:
sumber
bagaimana dengan --password = "" bekerja untuk saya yang berjalan pada 5.1.51
sumber
--password=xxx
pada baris perintah akan membuat kata sandi terlihat oleh siapa pun yang memiliki kemampuan untuk membaca proc (atau melakukan ps penuh) - yang cukup standar.Jelas saya pikir akan lebih baik dan lebih aman untuk menempatkan baris cmd penuh di crontab root, dengan kredensial. Setidaknya hasil edit crontab dibatasi (dapat dibaca) oleh seseorang yang sudah mengetahui kata sandi .. jadi jangan khawatir untuk menampilkannya dalam teks biasa ...
Jika diperlukan lebih dari mysqldump sederhana ... cukup tempatkan skrip bash yang menerima kredensial sebagai params dan lakukan semua fasilitas di dalamnya ...
File bas sederhana
Di dalam Crontab:
sumber
Anda dapat menentukan kata sandi pada baris perintah sebagai berikut:
Opsi untuk mysqldump adalah Case Sensitive!
sumber
mysqldump -u root -pmypassword