Saya baru mengenal sisi admin DBMS dan sedang menyiapkan database baru malam ini (menggunakan MySQL) ketika saya memperhatikan ini. Setelah memberi pengguna hak istimewa untuk pertama kalinya, pemberian lain dibuat seperti itu
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
Dokumentasi mengatakan bahwa USAGE
hak istimewa berarti "tidak ada hak istimewa," jadi saya menyimpulkan bahwa hibah bekerja secara hierarki dan mungkin pengguna harus memiliki semacam hak istimewa untuk semua database, jadi ini berfungsi sebagai tangkapan semua?
Saya juga tidak mengerti mengapa baris ini memiliki IDENTIFIED BY
klausa di dalamnya ketika hibah yang saya buat tidak memiliki IDENTIFIED BY
klausa (terutama karena saya tidak mengerti tujuan klausa tersebut).
Edit: Maaf untuk tidak menyatakan ini awalnya, hibahnya
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
sumber
Jawaban:
Seperti yang Anda katakan, di MySQL
USAGE
identik dengan "tidak ada hak istimewa". Dari Manual Referensi MySQL :USAGE
adalah cara untuk memberi tahu MySQL bahwa ada akun tanpa memberikan hak istimewa apa pun ke akun itu. Mereka hanya memiliki izin untuk menggunakan server MySQLUSAGE
. Ini sesuai dengan baris dalam`mysql`.`user`
tabel tanpa set hak istimewa.The
IDENTIFIED BY
klausul menunjukkan bahwa password ditetapkan untuk pengguna tersebut. Bagaimana kita tahu bahwa pengguna adalah yang mereka katakan? Mereka mengidentifikasi diri mereka sendiri dengan mengirimkan kata sandi yang benar untuk akun mereka.Kata sandi pengguna adalah salah satu atribut akun tingkat global yang tidak terkait dengan database atau tabel tertentu. Itu juga tinggal di
`mysql`.`user`
meja. Jika pengguna tidak memiliki hak istimewa lainON *.*
, mereka diberikanUSAGE ON *.*
dan hash kata sandi mereka ditampilkan di sana. Ini sering merupakan efek samping dariCREATE USER
pernyataan. Ketika seorang pengguna dibuat dengan cara itu, mereka awalnya tidak memiliki hak istimewa sehingga mereka hanya diberikanUSAGE
.sumber
Saya mencoba untuk menemukan arti
GRANT USAGE on *.* TO
dan ditemukan di sini. Saya bisa mengklarifikasi yangGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
akan diberikan ketika Anda membuat pengguna dengan perintah berikut (CREATE
):Saat Anda memberikan hak istimewa
GRANT
, hak istimewa baru akan ditambahkan di atasnya.sumber
Selain kata sandi mysql ketika tidak menggunakan
IDENTIFIED BY
klausa, mungkin nilai kosong, jika tidak kosong, mereka dapat dienkripsi. Tapi yaUSAGE
digunakan untuk mengubah akun dengan memberikan pembatas sumber daya sederhana sepertiMAX_QUERIES_PER_HOUR
, sekali lagi ini dapat ditentukan dengan juga menggunakan klausa WITH, bersama denganGRANT USAGE
(tidak ada hak istimewa yang ditambahkan) atauGRANT ALL
, Anda juga dapat menentukanGRANT USAGE
di tingkat global, tingkat database, tingkat meja, dll ....sumber