Itu tergantung pada bagaimana Anda mendefinisikan "semua dibaca".
"Membaca" dari tabel dan tampilan adalah SELECT
hak istimewa. Jika itu yang Anda maksud dengan "semua dibaca" maka ya:
GRANT SELECT ON *.* TO 'username'@'host_or_wildcard' IDENTIFIED BY 'password';
Namun, sepertinya yang Anda maksud adalah kemampuan untuk "melihat" segalanya, untuk "melihat tapi tidak menyentuh". Jadi, inilah jenis bacaan lain yang terlintas dalam pikiran:
Definisi "Membaca" dari view adalah SHOW VIEW
hak istimewa.
"Membaca" daftar kueri yang sedang dijalankan oleh pengguna lain adalah PROCESS
hak istimewa.
"Membaca" status replikasi saat ini adalah REPLICATION CLIENT
hak istimewa.
Perhatikan bahwa salah satu atau semua ini mungkin mengungkapkan lebih banyak informasi daripada yang ingin Anda ungkapkan, bergantung pada sifat pengguna yang bersangkutan.
Jika itu bacaan yang ingin Anda lakukan, Anda dapat menggabungkan salah satu dari itu (atau yang lain dari hak istimewa yang tersedia
) dalam satu GRANT
pernyataan.
GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO ...
Namun, tidak ada hak istimewa tunggal yang memberikan beberapa subset hak istimewa lainnya, seperti yang Anda minta.
Jika Anda melakukan hal-hal secara manual dan mencari cara yang lebih mudah untuk melakukannya tanpa perlu mengingat hibah persis yang biasanya Anda buat untuk kelas pengguna tertentu, Anda dapat mencari pernyataan untuk membuat kembali hibah pengguna yang sebanding, dan mengubahnya untuk membuat pengguna baru dengan hak istimewa yang serupa:
mysql> SHOW GRANTS FOR 'not_leet'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected] |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION CLIENT ON *.* TO 'not_leet'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Mengubah 'not_leet' dan 'localhost' agar sesuai dengan pengguna baru yang ingin Anda tambahkan, bersama dengan sandi, akan menghasilkan GRANT
yang dapat digunakan kembali pernyataan untuk membuat pengguna baru.
Tentu, jika Anda ingin satu operasi menyiapkan dan memberikan serangkaian hak istimewa terbatas kepada pengguna, dan mungkin menghapus hak istimewa yang tidak pantas, itu dapat dilakukan dengan membuat prosedur tersimpan yang merangkum semua yang ingin Anda lakukan. Di dalam isi prosedur, Anda akan membuat GRANT
pernyataan dengan SQL dinamis dan/atau secara langsung memanipulasi tabel hibah itu sendiri.
Dalam pertanyaan terbaru tentang Database Administrators
ini , poster menginginkan kemampuan bagi pengguna yang tidak memiliki hak untuk memodifikasi pengguna lain, yang tentu saja bukan sesuatu yang biasanya dapat dilakukan -- pengguna yang dapat memodifikasi pengguna lain, menurut definisi, bukanlah pengguna yang tidak memiliki hak -- namun - - prosedur tersimpan memberikan solusi yang baik dalam kasus itu, karena prosedur tersebut berjalan dengan konteks keamanan DEFINER
mereka pengguna, mengizinkan siapa saja dengan EXECUTE
hak istimewa pada prosedur untuk sementara mengambil hak istimewa yang ditingkatkan untuk memungkinkan mereka melakukan hal-hal spesifik yang diselesaikan prosedur.