Bagaimana hak istimewa bekerja di mysql?

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. Perintah

    CREATE ROLE IF NOT EXISTS '<role>'@'<host>';

    5 mendefinisikan peran baru dalam sistem basis data
  • CREATE ROLE IF NOT EXISTS '<role>'@'<host>';

    _7. Perintah

    CREATE ROLE IF NOT EXISTS '<role>'@'<host>';

    7 melakukan sebaliknya, menghapus peran yang ada
  • CREATE 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 peran
  • CREATE ROLE '<role>';

    _1. Dalam konteks peran, perintah

    CREATE ROLE '<role>';

    _1 menghapus hak istimewa dari peran dan juga menghapus keanggotaan peran dari akun pengguna
  • CREATE ROLE '<role>';

    _3. Perintah

    CREATE ROLE '<role>';

    3 menunjukkan hak istimewa dari akun atau peran pengguna yang diberikan
  • CREATE ROLE '<role>';

    _5. Perintah

    CREATE 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 tersebut
  • CREATE ROLE '<role>';

    _7. Perintah

    CREATE 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>';

    5
  • GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

    0
  • GRANT <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 istimewa

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

1, yang memungkinkan Anda membuat dan mengelola peran. Akun yang sudah memiliki hak istimewa

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

_1 secara otomatis memiliki semua fungsi yang diperlukan untuk mengelola peran

Hak istimewa

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

_0 diperlukan untuk memberikan hak istimewa pada suatu peran. Anda harus mengaktifkan

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

_0 untuk setiap hak istimewa yang ingin Anda tetapkan ke suatu peran

Apa 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, atau

GRANT 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 peran

GRANT SELECT ON appdb.* TO 'readapp';

2 alih-alih melacak setiap akun yang seharusnya memiliki akses

Menciptakan peran

Jika Anda memiliki akun dengan hak istimewa

CREATE ROLE IF NOT EXISTS '<role>'@'<host>';

5, Anda dapat mengelola peran menggunakan perintah

CREATE ROLE IF NOT EXISTS '<role>'@'<host>';

5

Apa 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 bagian

GRANT SELECT ON appdb.* TO 'readapp';

6 masih diperbolehkan, dan MySQL akan menggunakan

GRANT 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 pengganti

Secara 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 karakter

GRANT SELECT ON appdb.* TO 'readapp';

7 literal untuk komponen

GRANT 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 sama

Bagaimana Anda membuat peran?

Untuk membuat peran baru, gunakan perintah

CREATE ROLE IF NOT EXISTS '<role>'@'<host>';

5

Sintaks 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 perintah

CREATE ROLE IF NOT EXISTS '<role>'@'<host>';

5 sebelum nama peran

CREATE 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 karakter

GRANT SELECT ON appdb.* TO 'readapp';

7 literal. Jadi dalam praktiknya, banyak perintah pembuatan peran Anda mungkin terlihat lebih seperti ini

CREATE 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 disebut

GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';

8 pada database

GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';

9 dan semua objek di dalamnya, Anda dapat mengetik

GRANT 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 mengetik

GRANT 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>';

9 yang sama yang kami gunakan untuk memberikan hak istimewa kepada pengguna dan peran. Namun, formulir baru ini menambahkan peran ke pengguna, memungkinkan akun pengguna mengakses semua hak istimewa yang diberikan ke peran tersebut

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 database

GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';

9 untuk menghasilkan laporan, kita dapat menambahkan peran

GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';

8 ke akun pengguna, memberinya hak pilih

GRANT '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 peran

GRANT '<role>'@'<host>' TO '<user>'@'<host>';

0

CREATE ROLE '<role>'@'<host>';

0

Akun

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 peran

GRANT '<role>'@'<host>' TO '<user>'@'<host>';

0, akun

GRANT '<role>'@'<host>' TO '<user>'@'<host>';

5 akan segera mendapatkan hak istimewa tersebut

Bagaimana 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';

0

Untuk memodifikasi variabel

GRANT 'readapp' TO 'reports'@'localhost';

0, pengguna Anda harus memiliki hak istimewa

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

2 dan

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

3. Anda dapat mengatur peran yang ingin Anda berikan kepada setiap pengguna dengan mengetik

CREATE ROLE '<role>'@'<host>';

1

Di 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 individual

Anda tidak dapat menambahkan peran ke daftar

GRANT 'readapp' TO 'reports'@'localhost';

_0 yang memiliki hak istimewa

GRANT 'readapp' TO 'reports'@'localhost';

6. Ini adalah ukuran keamanan untuk memastikan bahwa tidak semua sesi pada sistem adalah sesi sistem secara otomatis

Bagaimana 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>';

2

Keluaran 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 cara

Sintaks dasar terlihat seperti ini

CREATE ROLE '<role>'@'<host>';

3

Ini akan mengaktifkan peran yang dimaksud. Penting untuk dicatat bahwa peran aktif sebelumnya yang tidak disebutkan dalam perintah

CREATE ROLE '<role>';

5 sekarang akan dinonaktifkan

Untuk mengaktifkan lebih dari satu peran sekaligus, pisahkan setiap peran dengan koma

CREATE ROLE '<role>'@'<host>';

4

Untuk mengaktifkan semua peran yang telah diberikan ke akun Anda, Anda dapat menentukan

GRANT 'readapp' TO 'reports'@'localhost';

9 alih-alih peran tertentu

CREATE ROLE '<role>'@'<host>';

5

Anda juga dapat memberi tahu MySQL untuk mengaktifkan semua peran Anda dengan pengecualian khusus menggunakan

CREATE ROLE '<role>'@'<host>';

00

CREATE ROLE '<role>'@'<host>';

6

Opsi lainnya adalah menonaktifkan semua peran di akun Anda dengan menentukan

CREATE ROLE '<role>'@'<host>';

01

CREATE ROLE '<role>'@'<host>';

7

Ini 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>';

02

CREATE ROLE '<role>'@'<host>';

8

Cara 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 dikonfigurasi

Untuk menentukan peran yang akan diaktifkan secara default, gunakan perintah

CREATE ROLE '<role>';

7 mirip dengan cara Anda menggunakan perintah

CREATE ROLE '<role>';

5

CREATE ROLE '<role>'@'<host>';

_9

Ini akan mengatur peran default yang akan diaktifkan untuk akun Anda sendiri saat masuk atau saat menggunakan

CREATE ROLE '<role>'@'<host>';

03

Jika pengguna Anda memiliki hak istimewa

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

_1, Anda dapat menyetel peran default untuk akun lain

CREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';

_0

Di sini, kami menetapkan bahwa akun

CREATE ROLE '<role>'@'<host>';

_08 harus mengaktifkan semua perannya secara otomatis setelah autentikasi

Sintaks 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>';

_1

Mengaktifkan 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 oleh

CREATE ROLE '<role>';

7

Untuk mengaktifkan fitur ini, Anda harus memiliki hak istimewa ________15______3 dan

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

2. Aktifkan fitur dengan mengetik

CREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';

_2

Ini 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 akun

Tampilkan 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>';

3

Untuk memeriksa hibah yang diaktifkan untuk pengguna, ketik

CREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';

_3

Outputnya 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

Bagaimana cara kerja hak istimewa SQL?

Hak istimewa adalah hak untuk mengeksekusi jenis pernyataan SQL tertentu atau untuk mengakses objek pengguna lain . Beberapa contoh hak istimewa termasuk hak untuk. Sambungkan ke database (buat sesi) Buat tabel.

Apa hak istimewa file di MySQL?

Pengguna yang memiliki hak istimewa FILE dapat membaca file apa pun di host server yang dapat dibaca dunia atau dapat dibaca oleh server MySQL . (Ini menyiratkan bahwa pengguna dapat membaca file apa pun di direktori basis data apa pun, karena server dapat mengakses salah satu file tersebut. )

Bagaimana sistem hak istimewa bekerja di MySQL di mana informasi akses disimpan?

Keistimewaan yang Disediakan oleh MySQL. Informasi tentang hak pengguna disimpan di tabel pengguna, db, host, tables_priv, dan kolom_priv di database mysql (yaitu, di database bernama mysql . Server MySQL membaca isi tabel ini saat dinyalakan dan dalam kondisi yang ditunjukkan di Bagian 4. 3.

Apa saja empat tingkat hak istimewa di MySQL?