Manajemen hak istimewa adalah bagian penting dari sistem dan. Memutuskan siapa yang harus memiliki akses apa ke komponen dan kekuatan mana dan kemudian merancang implementasi yang memungkinkan kebijakan tersebut membutuhkan banyak pemikiran dan perhatian.
MySQL memiliki sistem penetapan hak istimewa yang kuat yang memungkinkan Anda menerapkan kebijakan akses di seluruh sistem basis data Anda. Dalam panduan ini, kita akan berbicara tentang cara menggunakan perintah
SHOW GRANTS FOR '<user>'@'<host>';
0 danSHOW GRANTS FOR '<user>'@'<host>';
1 untuk menambah dan menghapus hak istimewa dari akun pengguna MySQL dan menerapkan kebijakan akses yang sesuai dengan kebutuhan AndaPrasyarat
Untuk mengikuti panduan ini, Anda memerlukan akun di server MySQL dengan hak istimewa yang sesuai
Perintah yang akan kita gunakan
Perintah terpenting yang akan kita gunakan dalam panduan ini adalah perintah
SHOW GRANTS FOR '<user>'@'<host>';
0 danSHOW GRANTS FOR '<user>'@'<host>';
1SHOW GRANTS FOR '<user>'@'<host>';
0. gunakan untuk menetapkan hak istimewa baru ke akun penggunaSHOW GRANTS FOR '<user>'@'<host>';
_1. gunakan untuk menghapus hak istimewa yang ada dari akun pengguna
Hak istimewa yang diperlukan
Untuk mengelola hak istimewa bagi pengguna MySQL, Anda harus memiliki hak istimewa berikut
SHOW GRANTS FOR '<user>'@'<host>';
_6. hak istimewaSHOW GRANTS FOR '<user>'@'<host>';
6 memungkinkan Anda untuk memberikan atau mencabut hak istimewa apa pun yang telah diberikan kepada Anda- hak istimewa apa pun yang ingin Anda berikan kepada pengguna lain
SHOW GRANTS FOR '<user>'@'<host>';
8 padaSHOW GRANTS FOR '<user>'@'<host>';
9. digunakan untuk mengeksekusiGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
_0 untuk akun lain
Untuk mengikuti panduan ini, kami akan berasumsi bahwa Anda menggunakan akun dengan hak istimewa administratif penuh (termasuk hak istimewa
SHOW GRANTS FOR '<user>'@'<host>';
6). Ini bisa jadi penggunaGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
2 umum yang dikonfigurasi selama penginstalan, atau pengguna lain dengan hak penuhBagaimana hak istimewa bekerja di MySQL?
Di MySQL, sistem hak istimewa menentukan apakah pengguna dapat menjalankan perintah yang diberikan atau tidak
Setiap kali klien mencoba melakukan suatu tindakan, MySQL berkonsultasi dengan informasinya tentang hak pengguna untuk menentukan apakah itu harus diizinkan atau tidak. Jika pengguna telah diberikan semua hak istimewa yang diperlukan untuk melakukan tindakan, MySQL mengeksekusi pernyataan. Jika pengguna kehilangan salah satu hak istimewa yang diperlukan, kesalahan akan terjadi
MySQL menyimpan informasi tentang pengguna mana yang memiliki hak istimewa apa di sejumlah tabel berbeda di database sistem
GRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
3. Berikut ini ulasan di mana MySQL menyimpan berbagai jenis informasi hak istimewa seperti yang tercakup dalam pengantar artikel otentikasi dan otorisasi MySQLGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
_4. TabelGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
_4 menentukan hak istimewa global statis setiap pengguna. Hak istimewa ini berlaku untuk seluruh server MySQL dan tidak terpengaruh oleh ketersediaan plugin atau komponen apa punGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
_6. TabelGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
_6 menentukan hak istimewa global dinamis setiap pengguna. Hak istimewa apa pun yang ditentukan oleh plugin atau komponen terdaftar di tabel iniGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
_8. TabelGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
_8 mendefinisikan hak istimewa tingkat basis data. TabelGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
_8 cocok dengan nilaiGRANT SELECT ON *.* TO 'sally'@'localhost';
1 danGRANT SELECT ON *.* TO 'sally'@'localhost';
2 pengguna seperti halnya tabelGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
4 tetapi juga memiliki kolom bernamaGRANT SELECT ON *.* TO 'sally'@'localhost';
4 yang menentukan cakupan basis data untuk baris tersebutGRANT SELECT ON *.* TO 'sally'@'localhost';
5. TabelGRANT SELECT ON *.* TO 'sally'@'localhost';
_5 mendefinisikan hak istimewa tingkat tabel dengan cara yang sama seperti yang dilakukan tabelGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
8 untuk database. Untuk mengaktifkan cakupan tingkat tabel, kolom bernamaGRANT SELECT ON *.* TO 'sally'@'localhost';
8 tersedia selainGRANT SELECT ON *.* TO 'sally'@'localhost';
1,GRANT SELECT ON *.* TO 'sally'@'localhost';
2, danGRANT SELECT ON *.* TO 'sally'@'localhost';
4GRANT SELECT ON accounting.* TO 'meredith'@'localhost';
_2. Selangkah lebih jauh dari tabelGRANT SELECT ON *.* TO 'sally'@'localhost';
_5, tabelGRANT SELECT ON accounting.* TO 'meredith'@'localhost';
2 menentukan akses pada tingkat kolom. Untuk menambahkan perincian tambahan ini, kolom bernamaGRANT SELECT ON accounting.* TO 'meredith'@'localhost';
5 disertakan sebagai tambahan kolom yang tersedia dalam tabelGRANT SELECT ON *.* TO 'sally'@'localhost';
5GRANT SELECT ON accounting.* TO 'meredith'@'localhost';
_7. TabelGRANT SELECT ON accounting.* TO 'meredith'@'localhost';
_7 mendefinisikan hak istimewa untuk mengeksekusi prosedur dan fungsi. Ini menggunakan kolomGRANT SELECT ON *.* TO 'sally'@'localhost';
1,GRANT SELECT ON *.* TO 'sally'@'localhost';
2,GRANT SELECT ON *.* TO 'sally'@'localhost';
4,GRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';
2, danGRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';
3 untuk membatasi hak istimewa pengguna untuk berbagai jenis prosesGRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';
4. TabelGRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';
_4 menentukan hak akses proksi pengguna. Proksi memungkinkan satu pengguna untuk bertindak sebagai pengguna lain, mewarisi hak istimewa mereka. TabelGRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';
_4 menggunakan kolomGRANT SELECT ON *.* TO 'sally'@'localhost';
1 danGRANT SELECT ON *.* TO 'sally'@'localhost';
2 untuk mencocokkan pengguna dan kemudian menggunakan kolom terpisah yang disebutGRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';
9 danGRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
0 untuk menentukan siapa yang dapat bertindak sebagai pengguna yang cocok
Hak istimewa apa yang tersedia di MySQL?
MySQL mendefinisikan banyak hak istimewa yang sesuai untuk berbagai cakupan sistem. Beberapa di antaranya berguna untuk penggunaan sehari-hari dan pengelolaan database, tabel, dan fungsi, sementara yang lain dirancang untuk tugas administratif seperti , pencadangan, dan manajemen koneksi
Anda dapat menemukan daftar lengkap hak istimewa statis (hak istimewa inti dibangun ke dalam MySQL itu sendiri) dan cakupannya masing-masing dalam dokumentasi MySQL. Dokumentasi MySQL yang terkait memberikan ikhtisar terperinci tentang apa yang diizinkan oleh setiap hak istimewa dan dalam banyak kasus, panduan tentang skenario apa yang paling berguna
Hak istimewa dinamis adalah jenis hak istimewa lainnya. Hak istimewa dinamis ditentukan dalam plugin atau komponen dan didaftarkan dengan MySQL untuk mengaktifkannya. Mereka selalu dalam lingkup global dan memberikan kemampuan atau fitur tambahan. Dalam dokumentasi MySQL mencantumkan setiap hak istimewa dinamis dan konteksnya. Anda dapat menemukan deskripsi lengkap tentang apa yang digunakan masing-masing dalam dokumentasi MySQL yang terkait
Untuk mengetahui hak istimewa mana yang diaktifkan dan tersedia di server MySQL Anda, serta konteks yang relevan, Anda dapat menggunakan perintah berikut
SHOW PRIVILEGES
Ini dapat membantu Anda memahami hak istimewa apa yang paling cocok untuk tanggung jawab pengguna Anda
Bagaimana Anda melihat hak istimewa apa yang dimiliki akun?
Sekarang setelah kita meninjau cara kerja hak istimewa di MySQL dan hak istimewa apa yang tersedia, bagaimana Anda mengetahui hak istimewa mana yang telah diberikan ke setiap akun?
Anda selalu dapat melihat hak istimewa yang diberikan kepada pengguna Anda sendiri dengan mengetik
SHOW GRANTS;
+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
Di sini, kita melihat bahwa
GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
_5 memiliki dua set hak istimewa yang ditentukan. Entri pertama menunjukkan bahwa itu telah diberikanGRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
7 cakupanGRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
8). Terlepas dari namanya,GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
_6 dalam konteks ini sebenarnya berarti "tidak ada hak istimewa yang diberikan". Jadi, secara default, pengguna ini belum diberi hak istimewa apa pun. Catatan kedua menunjukkan bahwa mereka telah diberikanGRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;
0, atau akses lengkap, ke databaseGRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;
1Jika akun pengguna yang Anda masuki memiliki
SHOW GRANTS FOR '<user>'@'<host>';
8 hak istimewa pada basis dataGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
3 internal, Anda dapat melihat hak istimewa yang diberikan ke akun pengguna lain. Untuk menampilkan hak istimewa akun lain, gunakan format berikutSHOW GRANTS FOR '<user>'@'<host>';
Output akan menampilkan hak istimewa dari akun yang disediakan
Bagaimana Anda menggunakan perintah
SHOW GRANTS FOR '<user>'@'<host>';
0?Perintah To
SHOW GRANTS FOR '<user>'@'<host>';
0 digunakan untuk menetapkan hak istimewa baru ke akun. Ini adalah cara utama untuk menambahkan akses ke akun pengguna ke database, objek, atau tindakan yang sebelumnya tidak mereka miliki. Kapan pun Anda ingin memberikan akses tambahan ke akun pengguna, perintahSHOW GRANTS FOR '<user>'@'<host>';
0 dapat membantuSintaks dasar
Sintaks dasar dari perintah
SHOW GRANTS FOR '<user>'@'<host>';
0 untuk menetapkan hak istimewa cukup mudah. Ini mengikuti format iniGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
Beberapa hak istimewa dapat diberikan, dipisahkan dengan koma
Menargetkan basis data, tabel, kolom, dll
Bagian
GRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;
_8 dari sintaks di atas menentukan ruang lingkup di mana hak istimewa akan diberikan. Ini akan menentukan objek mana yang akan diberikan hak istimewa dan tabel tertentu dalam databaseGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
3 tempat hak istimewa baru akan direkamUntuk memberikan hak istimewa secara global, mengizinkan akun pengguna untuk menggunakan hak istimewa di seluruh sistem, gunakan wildcard untuk database dan bagian objek database dari komponen ruang lingkup
Misalnya, untuk memberikan
SHOW GRANTS FOR '<user>'@'<host>';
_8 hak istimewa secara global untukSHOW GRANTS;
01, ketikkanGRANT SELECT ON *.* TO 'sally'@'localhost';
Untuk membatasi cakupan hibah ke satu basis data, ganti karakter pengganti di sisi kiri titik dengan nama basis data
GRANT SELECT ON accounting.* TO 'meredith'@'localhost';
Jika akun hanya memerlukan akses ke satu tabel dalam database, tentukan nama tabel di sisi kanan titik
GRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';
Terakhir, menerapkan hak istimewa ke kolom tertentu mengikuti format yang sedikit berbeda. Saat melakukan cakupan ke tingkat kolom, Anda harus memberikan kolom yang harus diterapkan hak istimewa dalam tanda kurung setelah nama hak istimewa
Misalnya, untuk memberikan kemampuan memperbarui nilai kolom
SHOW GRANTS;
02 di tabelSHOW GRANTS;
03, Anda dapat mengetikGRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
Menggunakan klausa
SHOW GRANTS;
_04Klausa tambahan, yang disebut
SHOW GRANTS;
04, dapat ditambahkan untuk memberikan pernyataan agar akun pengguna dapat mengelola pemberian untuk pengguna lain pada cakupan tertentu. Alih-alih hanya memberikan hak istimewa kepada pengguna, Anda juga memberikan kemampuan kepada pengguna tersebut untuk meneruskan hak istimewa apa pun yang mereka miliki pada lingkup yang sama kepada pengguna lainMisalnya, di sini, kami dapat memberikan
SHOW GRANTS;
06 akunSHOW GRANTS FOR '<user>'@'<host>';
8,SHOW GRANTS;
08,SHOW GRANTS;
09, danSHOW GRANTS;
10, serta kemampuan untuk meneruskan hak istimewanya di dalam databaseSHOW GRANTS;
11 kepada pengguna lainGRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;
Penting untuk disadari bahwa klausa
SHOW GRANTS;
_04 berlaku untuk akun (SHOW GRANTS;
06) dan ruang lingkup (SHOW GRANTS;
14), bukan hak khusus dalam pernyataan tersebut. Ini berarti bahwa meskipun kami telah menetapkan empat hak istimewa baru ke akunSHOW GRANTS;
06 dalam pernyataan ini,SHOW GRANTS;
04 mengizinkannya meneruskan salah satu hak istimewanya pada cakupanSHOW GRANTS;
14. Karena akun sekarang memilikiSHOW GRANTS FOR '<user>'@'<host>';
_6 untuk cakupan ini, jika kami memberikanSHOW GRANTS;
19 hak istimewa tambahan di masa mendatang, akun tersebut juga dapat meneruskan hak istimewa tersebut secara otomatisMeskipun Anda dapat menggunakan klausa
SHOW GRANTS;
_04 seperti yang ditunjukkan di atas untuk mengizinkan akun meneruskan hak istimewanya saat Anda memberi mereka hak istimewa tambahan, seringkali lebih jelas jika Anda memisahkan kedua tindakan ini, seperti iniSHOW GRANTS;
_0Saat Anda menangani
SHOW GRANTS FOR '<user>'@'<host>';
6 sebagai hak istimewa reguler, Anda juga dapat menggabungkannya dalam daftar hak istimewa yang Anda tetapkanSHOW GRANTS;
_1Dalam salah satu kasus ini, hasilnya adalah akun
SHOW GRANTS;
06 akan dapat memberikan hak istimewa apa pun yang dimilikinya untuk databaseSHOW GRANTS;
11, sekarang dan di masa mendatang, kepada pengguna lain. Hal ini membuat hak istimewaSHOW GRANTS FOR '<user>'@'<host>';
6 sangat berbahaya jika diberikan secara sembarangan, karena dapat memungkinkan pengguna memberikan hak istimewa tambahan pada akun yang tidak dimaksudkan oleh administratorMemberikan hak istimewa umum ke akun pengguna
Sekarang setelah kita membahas tentang cara kerja pemberian hak istimewa secara umum, kita dapat melihat beberapa contoh cara menetapkan berbagai hak istimewa umum ke akun pengguna
Bagaimana Anda memberi pengguna akses penuh?
Seringkali, Anda ingin menetapkan kepemilikan lengkap pengguna tertentu atas database atau komponen database. Misalnya, database
SHOW GRANTS;
_25 Anda mungkin memiliki pengguna khusus yang ditunjuk untuk mengelola tabel, fungsi, dan indeks di dalamnyaAnda dapat menetapkan hak istimewa penuh kepada pengguna pada cakupan tertentu menggunakan steno ________52______26 atau
GRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;
0SHOW GRANTS;
_2Ini akan memberikan setiap hak istimewa yang dapat diberikan oleh pengguna Anda pada
SHOW GRANTS;
25 database keSHOW GRANTS;
29 pengguna, dengan beberapa pengecualian penting. Paket hak istimewaGRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;
0 tidak termasuk hak istimewaSHOW GRANTS FOR '<user>'@'<host>';
6 atauSHOW GRANTS;
32, yang harus ditetapkan secara terpisah. Ini untuk memudahkan penetapan hak istimewa penuh tanpa meneruskan administrasi hak istimewa dan hak substitusi penggunaUntuk menetapkan semua hak istimewa kecuali
SHOW GRANTS FOR '<user>'@'<host>';
6 danSHOW GRANTS;
32 secara global, gunakan cakupanGRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
8SHOW GRANTS;
_3Bagaimana Anda memberi pengguna akses penuh termasuk administrasi hak istimewa?
Untuk menetapkan hak istimewa penuh dan juga memberi pengguna kemampuan untuk meneruskan salah satu hak istimewanya, sertakan
SHOW GRANTS FOR '<user>'@'<host>';
6 dalam pernyataan. Misalnya, untuk memberikan akunSHOW GRANTS;
_29 dari contoh terakhir kemampuan untuk mengontrol akses pengguna lain ke databaseSHOW GRANTS;
25, Anda dapat mengetikkanSHOW GRANTS;
_4Akun kemudian tidak hanya akan memiliki akses penuh ke database
SHOW GRANTS;
25, tetapi juga dapat menentukan apa yang dapat dilakukan pengguna lain di databaseLogika yang sama ini dapat diterapkan secara global menggunakan konteks ________50______8. Dalam kasus ini, ini akan menjadikan akun yang diberikan sebagai pengguna administratif penuh
SHOW GRANTS;
5Bagaimana Anda memberi pengguna akses hanya-baca?
Seringkali, pada tingkat basis data atau tabel, Anda akan memiliki beberapa akun yang harus dapat mengakses informasi tetapi tidak memiliki kemampuan untuk mengubah basis data atau objek dengan cara apa pun. Ini mungkin termasuk alat pelaporan atau skenario apa pun di mana data harus dapat diakses tetapi tidak dapat dimodifikasi, seperti pada banyak halaman web non-interaktif
Hak istimewa
SHOW GRANTS FOR '<user>'@'<host>';
8 cukup untuk memberikan pengguna pada database atau objek. Untuk memberi penggunaSHOW GRANTS;
_42 akses hanya baca ke databaseSHOW GRANTS;
25, ketikSHOW GRANTS;
_6Pengguna ini akan dapat meminta dan mengekstrak data apa pun yang diperlukan dari database
SHOW GRANTS;
25, tetapi tidak dapat membuat perubahan apa punSeperti biasa, persamaan global menggunakan cakupan ________50______8
SHOW GRANTS;
_7Bagaimana Anda memberi pengguna akses baca dan tulis?
Pendamping umum untuk kasus penggunaan hanya-baca adalah pengguna yang memerlukan akses baca dan tulis. Jenis akses ini sesuai untuk setiap proses yang perlu mengelola data di dalam database atau objek. Misalnya, proses yang membuat atau mengedit profil pengguna situs web perlu dibaca dan
Untuk memberikan akses baca dan tulis kepada pengguna, beri mereka
SHOW GRANTS FOR '<user>'@'<host>';
8,SHOW GRANTS;
08,SHOW GRANTS;
09, danSHOW GRANTS;
10 hak istimewa pada objek. Sebagai contohSHOW GRANTS;
_8Bagaimana Anda memberi pengguna akses hanya tambahan?
Skenario umum lainnya adalah membuat akun yang hanya dapat menambahkan data ke tabel atau objek lain. Dengan cara ini, proses selalu memiliki izin tambahan untuk objek, tetapi tidak dapat menulis ulang atau mengubah entri yang sudah ada. Ini dapat berguna untuk log peristiwa tambahan saja atau skenario di mana pembaruan benar-benar disimpan sebagai rekaman baru untuk menyimpan riwayat
Untuk mengizinkan akun menambahkan-satunya hak istimewa pada objek database, berikan mereka hanya
SHOW GRANTS FOR '<user>'@'<host>';
8 danSHOW GRANTS;
08 hak istimewaSHOW GRANTS;
_9Jika Anda ingin akun secara selektif dapat memperbarui bagian tertentu dari catatan, Anda juga dapat memberi mereka
SHOW GRANTS;
09 hak istimewa pada kolom yang sesuai+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
0Bagaimana Anda menggunakan perintah
SHOW GRANTS FOR '<user>'@'<host>';
1?Sekarang setelah kita melihat perintah
SHOW GRANTS FOR '<user>'@'<host>';
0, kita perlu memperkenalkan pasangannya,SHOW GRANTS FOR '<user>'@'<host>';
1. Sementara perintahSHOW GRANTS FOR '<user>'@'<host>';
_0 memberikan hak istimewa tambahan kepada pengguna pada lingkup tertentu, perintahSHOW GRANTS FOR '<user>'@'<host>';
1 memungkinkan Anda untuk menghapus hak istimewa dari akunSintaks dasar
Perintah
SHOW GRANTS FOR '<user>'@'<host>';
1 mencerminkan perintahSHOW GRANTS FOR '<user>'@'<host>';
0 cukup dekat. Selain dari nama perintah, Anda mencabut hak istimewa dari akun alih-alih memberikannya ke akunSintaks dasar terlihat seperti ini
+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
_1Seperti halnya
SHOW GRANTS FOR '<user>'@'<host>';
0, beberapa hak istimewa dapat diberi nama, dipisahkan dengan komaMenargetkan basis data, tabel, kolom, dll
Karena hak istimewa terkait dengan ruang lingkup tertentu (global, database, tabel, dll. ), perintah
SHOW GRANTS FOR '<user>'@'<host>';
1 harus menentukan ruang lingkup untuk menghapus hak istimewa, seperti yang Anda lakukan saat menambahkan hak istimewaUntuk menghapus hak istimewa di tingkat global, gunakan wildcard
GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
8 untuk mencocokkan database apa pun dan objek database apa pun+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
_2Untuk menghapus hak istimewa dari database tertentu, tentukan nama database di sisi kiri titik
+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
_3Dan terakhir, untuk menghapus hak istimewa dari objek database, beri nama database dan nama objek yang dipisahkan oleh titik
+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
_4Sebaiknya periksa hak istimewa pengguna yang tersedia setelah pencabutan untuk memastikan bahwa mereka tidak lagi memiliki akses yang tidak diinginkan yang diberikan melalui cara lain
+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
5Menggunakan pencabutan sebagian untuk menyempurnakan hak istimewa
Pada MySQL 8. 0. 16, pencabutan sebagian didukung. Ini berarti bahwa Anda dapat memberikan hak istimewa yang luas kepada akun dan kemudian secara selektif menghapus hak istimewa tersebut untuk cakupan tertentu
Misalnya, Anda dapat menyiapkan akun yang memiliki hak istimewa penuh atas database kecuali pada database
GRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
3, yang digunakan untuk menyimpan informasi sistem seperti hak istimewa, detail autentikasi, dan lainnya untuk pengguna. Pencabutan sebagian akan memungkinkan Anda untuk memberikan hak penuh dan kemudian menambahkan pengecualian khusus untuk database tersebutUntuk mengaktifkan pencabutan sebagian di MySQL, Anda harus mengaktifkannya. Anda dapat mengaktifkannya secara terus-menerus dengan mengetik berikut ini di versi yang didukung (MySQL 8. 0. 16 atau lebih baru)
+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
_6Sekarang, untuk menyiapkan akun pengguna yang dijelaskan di atas, Anda dapat mengetik
+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
_7Di sini, kami telah membuat pengguna dan memberi mereka hak penuh untuk seluruh server MySQL. Setelah itu, kami mencabut hak istimewa tersebut secara khusus dalam konteks database
GRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
3. Kami kemudian memberikan kembali hak istimewaSHOW GRANTS FOR '<user>'@'<host>';
8 sehingga akun masih dapat membaca nilai dari databaseJika Anda melihat hak istimewa untuk akun ini, sesuatu yang mirip dengan ini akan ditampilkan
+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
8+--------------------------------------------------------------------+
Grants for exampleuser@localhost |
+--------------------------------------------------------------------+
GRANT USAGE ON *.* TO `exampleuser`@`localhost` |
GRANT ALL PRIVILEGES ON `exampledb`.* TO `exampleuser`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
9Baris pertama adalah daftar yang diperluas dari semua hak istimewa statis yang dikemas dalam singkatan
GRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;
0 yang diterapkan secara global (menggunakanGRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';
8). Baris kedua menunjukkan semua hak istimewa dinamis yang diringkas oleh singkatanGRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;
0, sekali lagi diterapkan secara global. Yang ketiga menunjukkan semua hak istimewa yang berlaku di tingkat database, kecualiSHOW GRANTS FOR '<user>'@'<host>';
8 dicabut dari databaseGRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';
3Apa hak istimewa
SHOW GRANTS;
_71?Keistimewaan
SHOW GRANTS;
_71 adalah keistimewaan khusus yang memiliki sejumlah kemampuan berbeda yang kuat dan berpotensi berbahaya. Pada MySQL 8, hak istimewaSHOW GRANTS;
_71 telah ditinggalkan demi hak istimewa dinamis yang lebih terperinci untuk memungkinkan tingkat kontrol yang lebih baikUntuk mempelajari tentang kemampuan yang diizinkan oleh hak istimewa
SHOW GRANTS;
_71 serta hak istimewa dinamis yang sekarang dapat digunakan sebagai gantinya, periksa sumber daya yang disertakan dengan dokumentasi MySQLJika Anda belum menggunakan hak istimewa
SHOW GRANTS;
_71, MySQL menyarankan agar Anda menggunakan subset dari hak istimewa dinamis yang Anda perlukan daripada memberikan hak istimewaSHOW GRANTS;
71 ke akun baruKesimpulan
Dalam panduan ini, kita berbicara tentang bagaimana sistem hak istimewa MySQL memungkinkan Anda mengontrol tingkat akses apa yang dimiliki akun pengguna Anda ke berbagai sumber daya pada cakupan yang berbeda. Hak istimewa dapat diberikan ke akun pengguna secara global, di tingkat basis data, atau lebih terperinci di tingkat objek basis data
Kami memperkenalkan perintah
SHOW GRANTS FOR '<user>'@'<host>';
_0 untuk menambahkan hak istimewa baru ke akun pengguna guna meningkatkan tingkat akses mereka. Kami membahas bagaimanaSHOW GRANTS FOR '<user>'@'<host>';
6 memungkinkan pengguna untuk meneruskan hak istimewa mereka sehingga administrator dapat mendistribusikan tanggung jawab manajemen hak istimewa mereka dan kemudian berbicara tentang cara menetapkan hak istimewa umum ke akun pengguna. Kami mendemonstrasikan bagaimana perintahSHOW GRANTS FOR '<user>'@'<host>';
1 dapat digunakan untuk menghapus hak istimewa yang diberikan ke akun dan bagaimana pencabutan sebagian dapat memungkinkan Anda untuk mengkodifikasi pengecualian untuk tunjangan yang luasMemahami cara mendistribusikan hak istimewa ke akun pengguna memungkinkan Anda menyiapkan sistem manajemen akses menggunakan prinsip hak istimewa terkecil. Dengan memberikan akun hanya hak khusus yang mereka perlukan untuk melakukan tugasnya, Anda dapat mencegah perilaku tidak sah, meminimalkan dampak masalah keamanan, dan menerapkan strategi isolasi untuk menjaga bagian berbeda dari sistem Anda agar tidak saling memengaruhi