Saya telah digigit beberapa kali oleh pengguna 'debian-sys-Maint' yang diinstal secara default pada paket server mysql diinstal dari repositori Ubuntu.
Secara umum yang terjadi adalah saya menarik salinan baru dari basis data produksi kami (yang tidak berjalan di Debian / Ubuntu) untuk pemecahan masalah atau pengembangan baru dan lupa untuk mengecualikan tabel mysql.user sehingga kehilangan pengguna debian-sys-Maint.
Jika kami menambahkan pengguna mysql baru untuk alasan apa pun, saya harus 'menggabungkan' ini ke dalam lingkungan pengembangan saya sebagai lawan dari hanya overlay tabel.
Tanpa pengguna, sistem saya tampaknya masih berfungsi, tetapi terganggu dengan kesalahan seperti:
sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
- Untuk apa debian-sys-maint digunakan?
- Apakah ada cara yang lebih baik bagi pengelola paket untuk melakukan apa yang mereka coba lakukan?
- Apa cara termudah untuk memulihkannya setelah saya kehilangannya?
- Apa set privilege yang benar / minimal untuk pengguna ini?
- Sepertinya ide yang buruk untuk 'memberikan semua hak istimewa pada *. * ...'
Sunting
Pertanyaan tambahan - Apakah kata sandi di /etc/mysql/debian.cnf sudah di-hash atau apakah ini kata sandi plaintext? Itu penting ketika Anda pergi untuk membuat ulang pengguna dan saya sepertinya tidak pernah melakukannya dengan benar pada percobaan pertama.
Terima kasih
Jawaban:
Satu hal utama yang digunakan untuk memberitahu server untuk menggulung log. Setidaknya perlu hak istimewa untuk memuat ulang dan mematikan.
Lihat file /etc/logrotate.d/mysql-server
Ini digunakan oleh
/etc/init.d/mysql
skrip untuk mendapatkan status server. Ini digunakan untuk mematikan / memuat kembali server dengan anggun.Berikut adalah kutipan dari README.Debian
Rencana terbaik adalah tidak kehilangannya. Jika Anda benar-benar kehilangan kata sandi, setel ulang, menggunakan akun lain. Jika Anda telah kehilangan semua hak admin di server mysql ikuti panduan untuk mengatur ulang kata sandi root, kemudian perbaiki
debian-sys-maint
.Anda bisa menggunakan perintah seperti ini untuk membuat file SQL yang bisa Anda gunakan nanti untuk membuat ulang akun.
Kata sandi tidak diacak / dienkripsi saat diinstal, tetapi versi baru mysql sekarang memiliki cara untuk mengenkripsi kredensial (lihat: https://serverfault.com/a/750363 ).
sumber
Pengguna debian-sys-maint secara default setara dengan root . Ini digunakan oleh skrip pemeliharaan tertentu pada sistem Debian, dan sebagai efek samping, memungkinkan pengguna dengan akses root pada kotak untuk melihat kata sandi plaintext di /etc/mysql/debian.cnf (baik atau buruk?)
Anda dapat membuat ulang pengguna dengan:
Hanya pastikan password sesuai yang di /etc/mysql/debian.cnf
sumber
Anda juga bisa:
Yang akan memberi Anda opsi untuk membuat ulang pengguna debian-sys-Maint. Pengguna dan basis data yang ada aman.
sumber
Saya hanya ingin berkomentar, tapi saya pikir sintaks yang benar layak untuk entri itu sendiri. Ini akan membuat pengguna debian-sys-Maint :
Jika Anda masih memiliki file /etc/mysql/debian.cnf, cukup gunakan kata sandi di sana.
Jangan ragu untuk menghasilkan solusi aman yang lebih
paranoid.sumber
/etc/mysql/debian.cnf
file adalahroot
pengguna Linux . Dan ketika seseorang dapat membaca file itu, mereka sudah memilikiroot
akses ke mesin dan dapat menghentikan server MySQL dan menambahkan admin sistem mereka sendiri. Dan skrip yang memulai MySQL dan paket lainnya tidak dapat melakukan pemeliharaan keamanan dan pemeliharaan lainnya. Jadi ya, itu seaman yang seharusnya. Dan berguna jika Anda kehilangan kata sandi admin MySQL untuk memulihkannya, tanpa perlu me-restart dalam mode tidak aman. ;-)Jika Anda perlu menambahkan
debian-sys-maint
pengguna hanya untuklogrotate.d
tujuan, Anda tidak boleh memberikanALL PRIVILEGES
atauGRANT OPTION
- ini adalah lubang keamanan raksasa yang tidak perlu. Sebagai gantinya, Anda bisa menambahkan pengguna denganRELOAD
hak istimewa seperti ini (dengan anggapan Anda sedang mengakses dbroot
, dan Anda mengganti xxxxxx dengan kata sandi Anda)Pembaruan 2019
Jawaban ini mungkin kedaluwarsa - silakan lihat komentar dengan pendapat kuat di bawah ini.
sumber
debian-sys-maint
. Juga, saya dapat mengkonfirmasi bahwa itu berfungsi seperti pesona. Tepuk tangan!debian-sys-maint
pengguna juga digunakan untuk mematikan server. Dan juga untuk memeriksa pengguna root saat memulai server mysql. Jadi, Anda setidaknya perlu memberikan hak pilih pada mysql. * Dan hak mematikan.Dari pada
kupikir
karena kata sandi tidak di-hash ...?
sumber
izin yang diperlukan debian-sys-Maint
Jawaban lain telah menangani semuanya dengan cukup kecuali set izin minimum yang diperlukan untuk pengguna debian-sys-Maint. Banyak jawaban di sini benar-benar salah dalam hal itu, dan sebenarnya berbahaya. Jangan mengurangi hak istimewa debian-sys-Maint (termasuk opsi hibah) tanpa membaca dan memahami di bawah ini:
Pemelihara Debian tidak memberikan semua hak istimewa kepada pengguna dengan berubah-ubah. Inilah yang dibutuhkan, di mana dan mengapa. Beberapa hak istimewa ini adalah superset dari yang lain, tetapi saya akan mencantumkannya secara independen jika Anda ingin menyesuaikan hal-hal dan menghapus persyaratan untuknya:
Yang terakhir adalah, tentu saja, persyaratan utama untuk hak istimewa. Halaman manual untuk mysql_upgrade menyatakan bahwa:
PERINGATAN Jika Anda memutuskan untuk mengurangi hak istimewa yang dimiliki debian-sys-Maint, maka pastikan Anda siap untuk menangani secara manual setiap pembaruan keamanan debian di masa depan dan / atau peningkatan yang menyentuh MySQL. Jika Anda melakukan pembaruan pada paket-paket MySQL dengan hak istimewa debian-sys-Main yang berkurang, dan jika mysql_upgrade tidak dapat diselesaikan sebagai hasilnya, itu mungkin membuat database Anda dalam keadaan (baca rusak) yang tidak ditentukan. Mengurangi hak istimewa mungkin tidak memiliki masalah sehari-hari yang jelas sampai pembaruan datang, jadi jangan ikuti kenyataan bahwa Anda telah mengurangi hak istimewa tanpa efek berbahaya sebagai dasar untuk berpikir itu aman.
sumber
Sebagai catatan untuk ini, lihat posting mysqlperformanceblog ini untuk alasan mengapa Anda mungkin ingin menonaktifkan hal-hal khusus debian.
sumber
Saat menggunakan MySQL 5.6+, saya akan merekomendasikan menggunakan
mysql_config_editor
perintah untuk membuat entri untuk pengguna'debian-sys-maint'@'localhost'
menggunakan kata sandi yang relevan, artinya kata sandi tidak perlu disimpan dalam teks biasa di server.mysql_config_editor set --login-path=debian-sys-maint --host=localhost --user=debian-sys-maint --password
Setelah ini, file konfigurasi khusus debian
/etc/mysql/debian.cnf
dapat diubah sehingga rincian nama pengguna dan kata sandi tidak disimpan dalam file.Akhirnya, ubah file logrotate untuk MySQL sehingga menggunakan detail login yang disimpan dalam
~/.mylogin.cnf
file alih-alih file spesifik debian dengan mengganti/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf
dengan
/usr/bin/mysqladmin --login-path=debian-sys-maint
Semoga ini membantu :)
Dave
sumber
debian-sys-maint
pengguna tercapai dengan ini? Paket-paket itu harus dapat menggunakan pengguna / kata sandi ini untuk melakukan beberapa pemeliharaan sistem sebagairoot
pengguna di domain Linux (bukanroot
pengguna di MySQL tanpa administrator yang diperlukan untuk memasukkanroot
kata sandi untuk MySQL?/etc/mysql/debian.cnf
untuk menghapus kata sandi dan mengubah file logrotate untuk referensi menggunakan rincian aman. Saya tidak yakin apakah pengguna debian-sys-Maint digunakan untuk hal lain, tetapi jika ya, ini akan membantu memberi Anda indikasi di mana Debian menggunakan akun pengguna ini atas nama Anda.