dan manajemen pengguna adalah dua area yang dapat dengan cepat menjadi rumit karena jumlah pengguna dan entitas database yang berbeda dalam sistem Anda meningkat. Mengelola banyak hak istimewa yang berbeda pada berbagai objek database, memastikan pengguna yang memiliki tanggung jawab yang sama memiliki tingkat akses yang sama, serta mengaudit dan mempersempit akses semuanya menjadi semakin sulit seiring berjalannya waktu
Untuk membantu mengatasi hal ini, MySQL memiliki konsep yang disebut "peran" yang memungkinkan Anda mengelompokkan kumpulan hak istimewa dengan nama tertentu, memungkinkan Anda untuk menetapkan dan mengubah pengaturan secara massal. Dalam panduan ini, kita akan membahas cara kerja peran dalam MySQL dan cara menggunakannya agar lebih mudah mengelola akses data untuk pengguna Anda
Perintah
Berikut adalah perintah SQL utama yang akan kita diskusikan sehubungan dengan pengelolaan peran MySQL
CREATE ROLE IF NOT EXISTS '<role>'@'<host>';
5. PerintahCREATE ROLE IF NOT EXISTS '<role>'@'<host>';
5 mendefinisikan peran baru dalam sistem basis dataCREATE ROLE IF NOT EXISTS '<role>'@'<host>';
_7. PerintahCREATE ROLE IF NOT EXISTS '<role>'@'<host>';
7 melakukan sebaliknya, menghapus peran yang adaCREATE ROLE IF NOT EXISTS '<role>'@'<host>';
_9. Perintah ________0______9 memiliki dua tujuan berbeda terkait dengan peran. menambahkan hak istimewa ke peran dan menambahkan akun pengguna sebagai anggota peranCREATE ROLE '<role>';
_1. Dalam konteks peran, perintahCREATE ROLE '<role>';
_1 menghapus hak istimewa dari peran dan juga menghapus keanggotaan peran dari akun penggunaCREATE ROLE '<role>';
_3. PerintahCREATE ROLE '<role>';
3 menunjukkan hak istimewa dari akun atau peran pengguna yang diberikanCREATE ROLE '<role>';
_5. PerintahCREATE ROLE '<role>';
5 mengubah peran yang digunakan akun pengguna secara aktif. Ini memungkinkan Anda untuk menentukan set izin mana yang berlaku untuk akun untuk sesi tersebutCREATE ROLE '<role>';
_7. PerintahCREATE ROLE '<role>';
7 menentukan peran yang diterapkan secara otomatis saat klien masuk sebagai akun pengguna tertentu
Hak istimewa yang diperlukan
Untuk mengikuti panduan ini, Anda memerlukan hak istimewa berikut
CREATE ROLE IF NOT EXISTS '<role>'@'<host>';
5GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
0GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
1 (untuk menetapkan peran default untuk pengguna lain)GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
2 (untuk mengatur variabel sistem yang mengubah perilaku peran)GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
3 (untuk mengatur variabel sistem yang mengubah perilaku peran)
Hak istimewa
CREATE ROLE IF NOT EXISTS '<role>'@'<host>';
5 adalah versi lebih rendah dari hak istimewaGRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
1, yang memungkinkan Anda membuat dan mengelola peran. Akun yang sudah memiliki hak istimewaGRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
_1 secara otomatis memiliki semua fungsi yang diperlukan untuk mengelola peranHak istimewa
GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
_0 diperlukan untuk memberikan hak istimewa pada suatu peran. Anda harus mengaktifkanGRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
_0 untuk setiap hak istimewa yang ingin Anda tetapkan ke suatu peranApa itu peran?
Di MySQL, a adalah entitas yang berfungsi sebagai wadah atau kumpulan hak istimewa. Administrator dapat menetapkan hak istimewa ke peran dengan cara yang sama seperti mereka menetapkan hak istimewa ke akun pengguna. Anda kemudian dapat menambahkan akun pengguna sebagai anggota peran, mengizinkan akun tersebut mengakses hak istimewa yang terkait dengan peran tersebut
Pada dasarnya, peran berfungsi sebagai cara untuk menyatukan berbagai hak istimewa terkait untuk memudahkan pengelolaan hak istimewa. Alih-alih memastikan bahwa setiap pengguna memiliki tingkat akses persis yang mereka perlukan dengan menetapkan hak istimewa individual, menggunakan pengelompokan hak istimewa memungkinkan Anda mengelola tugas yang lebih sedikit dan lebih mudah dipahami
Ini memiliki keuntungan yang jelas saat menetapkan tingkat akses, karena lebih mudah untuk menetapkan peran
GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
9,GRANT SELECT ON appdb.* TO 'readapp';
0, atauGRANT SELECT ON appdb.* TO 'readapp';
1 kepada pengguna daripada mengelola lusinan hak istimewa secara individual. Itu juga membuatnya cepat untuk men-tweak akses ke banyak akun sekaligus. Jika Anda membuat database baru untuk tim penjualan, Anda dapat memberikan akses peranGRANT SELECT ON appdb.* TO 'readapp';
2 alih-alih melacak setiap akun yang seharusnya memiliki aksesMenciptakan peran
Jika Anda memiliki akun dengan hak istimewa
CREATE ROLE IF NOT EXISTS '<role>'@'<host>';
5, Anda dapat mengelola peran menggunakan perintahCREATE ROLE IF NOT EXISTS '<role>'@'<host>';
5Apa sintaks MySQL untuk peran?
Nama peran harus mengikuti format khusus untuk MySQL agar dianggap valid. Dalam banyak hal, mereka mencerminkan , tetapi dengan beberapa perbedaan penting
Peran mengikuti format berikut
'<role>'@'<host>'
Seperti pengguna, peran memiliki dua komponen. nama peran dan host tempat klien terhubung. Namun, cara MySQL menginterpretasikan komponen ini berbeda
Dengan peran, bagian
GRANT SELECT ON appdb.* TO 'readapp';
_5 dari nama tidak boleh kosong. Tidak ada konsep peran yang "anonim" seperti yang ada pada pengguna. Di sisi lain, menghilangkan bagianGRANT SELECT ON appdb.* TO 'readapp';
6 masih diperbolehkan, dan MySQL akan menggunakanGRANT SELECT ON appdb.* TO 'readapp';
7 sebagai host. Namun,GRANT SELECT ON appdb.* TO 'readapp';
_7 dalam konteks ini ditafsirkan sebagai karakter literal, bukan karakter penggantiSecara efektif, ini berarti bahwa meskipun nama peran secara dangkal berbagi format nama akun pengguna, mereka tidak menjalani jenis evaluasi apa pun seperti yang dilakukan akun pengguna dan hanya label dengan dua komponen. Alasan mereka memiliki dua bagian pada namanya adalah karena Anda dapat membuat akun pengguna yang dapat berfungsi sebagai pengguna dan peran. Saat digunakan sebagai pengguna, komponen tunduk pada aturan evaluasi khusus dan saat digunakan sebagai peran, nama hanya dicocokkan langsung menggunakan nama komponen literal
Karena aturan ini, dalam banyak kasus, administrator memilih untuk menentukan peran hanya dengan menggunakan komponen
GRANT SELECT ON appdb.* TO 'readapp';
5. Hal ini menyebabkan MySQL mengganti karakterGRANT SELECT ON appdb.* TO 'readapp';
7 literal untuk komponenGRANT SELECT ON appdb.* TO 'readapp';
6, secara efektif membuat bagian dari nama itu tidak terlihat dan tidak penting. Jika Anda tidak bermaksud menggunakan nama sebagai akun pengguna dan peran, Anda dapat melakukan hal yang samaBagaimana Anda membuat peran?
Untuk membuat peran baru, gunakan perintah
CREATE ROLE IF NOT EXISTS '<role>'@'<host>';
5Sintaks dasar terlihat seperti ini
CREATE ROLE '<role>'@'<host>';
Anda juga dapat membuat beberapa peran sekaligus dengan memisahkan setiap nama peran dengan koma
CREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';
Jika salah satu peran yang Anda tentukan sudah ada di sistem, perintah akan gagal dengan kesalahan
Untuk menghindari hal ini dan menyebabkan MySQL hanya mengeluarkan peringatan, Anda dapat menyertakan klausa
GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';
3 setelah perintahCREATE ROLE IF NOT EXISTS '<role>'@'<host>';
5 sebelum nama peranCREATE ROLE IF NOT EXISTS '<role>'@'<host>';
Seperti disebutkan di atas, berkali-kali administrator menghilangkan bagian
GRANT SELECT ON appdb.* TO 'readapp';
6 dari nama peran untuk kesederhanaan, secara implisit menyetelnya ke karakterGRANT SELECT ON appdb.* TO 'readapp';
7 literal. Jadi dalam praktiknya, banyak perintah pembuatan peran Anda mungkin terlihat lebih seperti iniCREATE ROLE '<role>';
_Bagaimana Anda memberikan hak istimewa untuk peran?
Setelah membuat peran baru, prioritas Anda berikutnya biasanya adalah membuatnya bermakna dengan memberi mereka hak istimewa
Anda memberikan hak istimewa untuk peran dengan cara yang sama seperti Anda. Anda memberikan hak istimewa persis yang ingin Anda berikan, tentukan cakupan dengan menyediakan database dan objek basis data di mana hak istimewa tersebut valid, dan entitas yang harus diberikan hak istimewa — dalam hal ini, peran
GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
Misalnya, untuk memberikan hak istimewa
GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';
_7 ke peran yang disebutGRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';
8 pada databaseGRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';
9 dan semua objek di dalamnya, Anda dapat mengetikGRANT SELECT ON appdb.* TO 'readapp';
Demikian pula, Anda dapat memberikan hak menulis ke database yang sama untuk peran yang disebut
GRANT '<role>'@'<host>' TO '<user>'@'<host>';
0 dengan mengetikGRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';
Anda dapat memberikan hak istimewa dan mencabutnya dari peran persis seperti yang Anda lakukan secara langsung dengan akun pengguna. Jadi, Anda selalu dapat mengubah hak istimewa yang terkait dengan suatu peran jika Anda perlu menyesuaikan tingkat akses yang ingin Anda berikan
Bagaimana Anda memberikan keanggotaan kepada pengguna untuk suatu peran?
Setelah Anda menambahkan hak istimewa ke peran Anda, Anda dapat mulai menambahkan anggota ke peran tersebut untuk memberi mereka hak istimewa terkait
Untuk melakukan ini, MySQL menggunakan bentuk berbeda dari
CREATE ROLE IF NOT EXISTS '<role>'@'<host>';
Sintaks dasar terlihat seperti ini
GRANT '<role>'@'<host>' TO '<user>'@'<host>';
Misalnya, jika pengguna
GRANT '<role>'@'<host>' TO '<user>'@'<host>';
_2 harus dapat membaca data dari databaseGRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';
9 untuk menghasilkan laporan, kita dapat menambahkan peranGRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';
8 ke akun pengguna, memberinya hak pilihGRANT 'readapp' TO 'reports'@'localhost';
Demikian pula, untuk memberikan
GRANT '<role>'@'<host>' TO '<user>'@'<host>';
_5 kemampuan untuk mengelola data dalam database yang sama, kita dapat membuat pengguna tersebut menjadi anggota peranGRANT '<role>'@'<host>' TO '<user>'@'<host>';
0CREATE ROLE '<role>'@'<host>';
0Akun
GRANT '<role>'@'<host>' TO '<user>'@'<host>';
_5 sekarang akan memiliki kemampuan untuk memasukkan, memperbarui, dan menghapus data dari database. Jika hak istimewa baru ditambahkan ke peranGRANT '<role>'@'<host>' TO '<user>'@'<host>';
0, akunGRANT '<role>'@'<host>' TO '<user>'@'<host>';
5 akan segera mendapatkan hak istimewa tersebutBagaimana Anda secara otomatis memberikan peran tertentu kepada setiap pengguna?
Terkadang mungkin ada peran yang Anda inginkan untuk diakses oleh setiap pengguna di sistem Anda. Anda dapat menentukan peran mana yang diberikan setiap akun secara otomatis dengan menyetel variabel
GRANT 'readapp' TO 'reports'@'localhost';
0Untuk memodifikasi variabel
GRANT 'readapp' TO 'reports'@'localhost';
0, pengguna Anda harus memiliki hak istimewaGRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
2 danGRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
3. Anda dapat mengatur peran yang ingin Anda berikan kepada setiap pengguna dengan mengetikCREATE ROLE '<role>'@'<host>';
1Di sini, kami memberi setiap pengguna di sistem tiga peran secara otomatis. Saat mengatur variabel sistem, nilai
GRANT 'readapp' TO 'reports'@'localhost';
_0 harus berupa string, jadi kami merangkum seluruh daftar peran dalam tanda kutip tunggal dan menggunakan backticks untuk mengutip komponen peran individualAnda tidak dapat menambahkan peran ke daftar
GRANT 'readapp' TO 'reports'@'localhost';
_0 yang memiliki hak istimewaGRANT 'readapp' TO 'reports'@'localhost';
6. Ini adalah ukuran keamanan untuk memastikan bahwa tidak semua sesi pada sistem adalah sesi sistem secara otomatisBagaimana Anda menggunakan hak istimewa dari peran?
Setelah Anda memberikan keanggotaan akun pengguna ke peran, bagaimana Anda menggunakannya?
Melihat peran aktif saat ini
Sebelum mengaktifkan peran baru, Anda dapat memeriksa peran mana yang sedang aktif untuk sesi pengguna Anda
Untuk melihat peran aktif untuk sesi Anda, ketik
CREATE ROLE '<role>'@'<host>';
2Keluaran akan menampilkan nol atau lebih peran yang aktif di sesi Anda saat ini. Hak istimewa yang terkait dengan peran tersebut akan menambah tindakan yang boleh Anda lakukan
Cara mengaktifkan peran untuk sesi tersebut
Untuk mengubah peran mana yang aktif selama sesi Anda, gunakan perintah
CREATE ROLE '<role>';
5. Anda dapat menggunakan perintah ini dengan berbagai caraSintaks dasar terlihat seperti ini
CREATE ROLE '<role>'@'<host>';
3Ini akan mengaktifkan peran yang dimaksud. Penting untuk dicatat bahwa peran aktif sebelumnya yang tidak disebutkan dalam perintah
CREATE ROLE '<role>';
5 sekarang akan dinonaktifkanUntuk mengaktifkan lebih dari satu peran sekaligus, pisahkan setiap peran dengan koma
CREATE ROLE '<role>'@'<host>';
Untuk mengaktifkan semua peran yang telah diberikan ke akun Anda, Anda dapat menentukan
GRANT 'readapp' TO 'reports'@'localhost';
9 alih-alih peran tertentuCREATE ROLE '<role>'@'<host>';
5Anda juga dapat memberi tahu MySQL untuk mengaktifkan semua peran Anda dengan pengecualian khusus menggunakan
CREATE ROLE '<role>'@'<host>';
00CREATE ROLE '<role>'@'<host>';
6Opsi lainnya adalah menonaktifkan semua peran di akun Anda dengan menentukan
CREATE ROLE '<role>'@'<host>';
01CREATE ROLE '<role>'@'<host>';
7Ini akan menonaktifkan semua peran pengguna Anda untuk sesi tersebut, memberi Anda hanya hak istimewa yang ditetapkan khusus untuk akun pengguna Anda
Untuk kembali ke daftar default peran yang ditentukan untuk akun Anda, gunakan kata kunci
CREATE ROLE '<role>'@'<host>';
02CREATE ROLE '<role>'@'<host>';
8Cara menentukan peran default untuk akun pengguna
Peran yang diaktifkan secara otomatis saat Anda masuk sebagai pengguna dan peran yang diaktifkan kembali saat Anda menggunakan
CREATE ROLE '<role>'@'<host>';
03 dapat dikonfigurasiUntuk menentukan peran yang akan diaktifkan secara default, gunakan perintah
CREATE ROLE '<role>';
7 mirip dengan cara Anda menggunakan perintahCREATE ROLE '<role>';
5CREATE ROLE '<role>'@'<host>';
_9Ini akan mengatur peran default yang akan diaktifkan untuk akun Anda sendiri saat masuk atau saat menggunakan
CREATE ROLE '<role>'@'<host>';
03Jika pengguna Anda memiliki hak istimewa
GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
_1, Anda dapat menyetel peran default untuk akun lainCREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';
_0Di sini, kami menetapkan bahwa akun
CREATE ROLE '<role>'@'<host>';
_08 harus mengaktifkan semua perannya secara otomatis setelah autentikasiSintaks ini juga dapat digunakan untuk menentukan peran default untuk lebih dari satu akun dengan memisahkan setiap pengguna dengan koma
CREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';
_1Mengaktifkan semua peran untuk semua pengguna secara default
Jika Anda ingin setiap akun di server MySQL Anda mengaktifkan semua perannya secara default, Anda dapat mengubah pengaturan sistem untuk melakukannya
Ketika variabel
CREATE ROLE '<role>'@'<host>';
_09 disetel ke true, MySQL akan secara otomatis mengaktifkan semua peran yang terkait dengan akun saat masuk. Ini menggantikan pengaturan yang ditentukan olehCREATE ROLE '<role>';
7Untuk mengaktifkan fitur ini, Anda harus memiliki hak istimewa ________15______3 dan
GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';
2. Aktifkan fitur dengan mengetikCREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';
_2Ini akan menyebabkan akun pengguna mengaktifkan semua peran secara otomatis saat login. Namun,
CREATE ROLE '<role>'@'<host>';
_03 akan tetap memungkinkan Anda untuk mengaktifkan hanya peran default yang terkait dengan akunTampilkan hak istimewa yang ada yang diperoleh dari peran
Untuk memahami hak istimewa apa yang tersedia di akun Anda, Anda dapat menggunakan perintah
CREATE ROLE '<role>';
3Untuk memeriksa hibah yang diaktifkan untuk pengguna, ketik
CREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';
_3Outputnya akan menunjukkan kepada Anda semua hak istimewa yang diberikan langsung ke akun pengguna serta semua peran yang menjadi anggota pengguna
Setelah mempelajari peran apa yang menjadi anggota akun, Anda dapat memeriksa hak istimewa apa yang diberikan peran kepada pengguna dengan mengetik