Apa saja empat tingkat hak istimewa di mysql?

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 dan

SHOW GRANTS FOR '<user>'@'<host>';

1 untuk menambah dan menghapus hak istimewa dari akun pengguna MySQL dan menerapkan kebijakan akses yang sesuai dengan kebutuhan Anda

Prasyarat

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 dan

SHOW GRANTS FOR '<user>'@'<host>';

1

  • SHOW GRANTS FOR '<user>'@'<host>';

    0. gunakan untuk menetapkan hak istimewa baru ke akun pengguna
  • SHOW 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 istimewa

    SHOW 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 pada

    SHOW GRANTS FOR '<user>'@'<host>';

    9. digunakan untuk mengeksekusi

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

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

2 umum yang dikonfigurasi selama penginstalan, atau pengguna lain dengan hak penuh

Bagaimana 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 MySQL

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

    _4. Tabel

    GRANT <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 pun
  • GRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';

    _6. Tabel

    GRANT <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 ini
  • GRANT <privileges> ON <database>.<object> TO '<user>'@'<host>';

    _8. Tabel

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

    _8 mendefinisikan hak istimewa tingkat basis data. Tabel

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

    _8 cocok dengan nilai

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    1 dan

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    2 pengguna seperti halnya tabel

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

    4 tetapi juga memiliki kolom bernama

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    4 yang menentukan cakupan basis data untuk baris tersebut
  • GRANT SELECT ON *.* TO 'sally'@'localhost';

    5. Tabel

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    _5 mendefinisikan hak istimewa tingkat tabel dengan cara yang sama seperti yang dilakukan tabel

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

    8 untuk database. Untuk mengaktifkan cakupan tingkat tabel, kolom bernama

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    8 tersedia selain

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    1,

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    2, dan

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    4
  • GRANT SELECT ON accounting.* TO 'meredith'@'localhost';

    _2. Selangkah lebih jauh dari tabel

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    _5, tabel

    GRANT SELECT ON accounting.* TO 'meredith'@'localhost';

    2 menentukan akses pada tingkat kolom. Untuk menambahkan perincian tambahan ini, kolom bernama

    GRANT SELECT ON accounting.* TO 'meredith'@'localhost';

    5 disertakan sebagai tambahan kolom yang tersedia dalam tabel

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    5
  • GRANT SELECT ON accounting.* TO 'meredith'@'localhost';

    _7. Tabel

    GRANT SELECT ON accounting.* TO 'meredith'@'localhost';

    _7 mendefinisikan hak istimewa untuk mengeksekusi prosedur dan fungsi. Ini menggunakan kolom

    GRANT 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, dan

    GRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';

    3 untuk membatasi hak istimewa pengguna untuk berbagai jenis proses
  • GRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';

    4. Tabel

    GRANT 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. Tabel

    GRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';

    _4 menggunakan kolom

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    1 dan

    GRANT SELECT ON *.* TO 'sally'@'localhost';

    2 untuk mencocokkan pengguna dan kemudian menggunakan kolom terpisah yang disebut

    GRANT UPDATE ON accounting.revenue TO 'frank'@'localhost';

    9 dan

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

GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';

6 secara global (ditunjukkan dengan wildcard

GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';

7 cakupan

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

GRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;

0, atau akses lengkap, ke database

GRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;

1

Jika akun pengguna yang Anda masuki memiliki

SHOW GRANTS FOR '<user>'@'<host>';

8 hak istimewa pada basis data

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

SHOW 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, perintah

SHOW GRANTS FOR '<user>'@'<host>';

0 dapat membantu

Sintaks dasar

Sintaks dasar dari perintah

SHOW GRANTS FOR '<user>'@'<host>';

0 untuk menetapkan hak istimewa cukup mudah. Ini mengikuti format ini

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

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

3 tempat hak istimewa baru akan direkam

Untuk 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 untuk

SHOW GRANTS;

01, ketikkan

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

SHOW GRANTS;

03, Anda dapat mengetik

GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';

Menggunakan klausa SHOW GRANTS;_04

Klausa 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 lain

Misalnya, di sini, kami dapat memberikan

SHOW GRANTS;

06 akun

SHOW GRANTS FOR '<user>'@'<host>';

8,

SHOW GRANTS;

08,

SHOW GRANTS;

09, dan

SHOW GRANTS;

10, serta kemampuan untuk meneruskan hak istimewanya di dalam database

SHOW GRANTS;

11 kepada pengguna lain

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

SHOW GRANTS;

06 dalam pernyataan ini,

SHOW GRANTS;

04 mengizinkannya meneruskan salah satu hak istimewanya pada cakupan

SHOW GRANTS;

14. Karena akun sekarang memiliki

SHOW GRANTS FOR '<user>'@'<host>';

_6 untuk cakupan ini, jika kami memberikan

SHOW GRANTS;

19 hak istimewa tambahan di masa mendatang, akun tersebut juga dapat meneruskan hak istimewa tersebut secara otomatis

Meskipun 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 ini

SHOW GRANTS;

_0

Saat Anda menangani

SHOW GRANTS FOR '<user>'@'<host>';

6 sebagai hak istimewa reguler, Anda juga dapat menggabungkannya dalam daftar hak istimewa yang Anda tetapkan

SHOW GRANTS;

_1

Dalam salah satu kasus ini, hasilnya adalah akun

SHOW GRANTS;

06 akan dapat memberikan hak istimewa apa pun yang dimilikinya untuk database

SHOW GRANTS;

11, sekarang dan di masa mendatang, kepada pengguna lain. Hal ini membuat hak istimewa

SHOW 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 administrator

Memberikan 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 dalamnya

Anda 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;

0

SHOW GRANTS;

_2

Ini akan memberikan setiap hak istimewa yang dapat diberikan oleh pengguna Anda pada

SHOW GRANTS;

25 database ke

SHOW GRANTS;

29 pengguna, dengan beberapa pengecualian penting. Paket hak istimewa

GRANT SELECT,INSERT,UPDATE,DELETE ON library.* TO 'librarymanager'@'localhost' WITH GRANT OPTION;

0 tidak termasuk hak istimewa

SHOW GRANTS FOR '<user>'@'<host>';

6 atau

SHOW GRANTS;

32, yang harus ditetapkan secara terpisah. Ini untuk memudahkan penetapan hak istimewa penuh tanpa meneruskan administrasi hak istimewa dan hak substitusi pengguna

Untuk menetapkan semua hak istimewa kecuali

SHOW GRANTS FOR '<user>'@'<host>';

6 dan

SHOW GRANTS;

32 secara global, gunakan cakupan

GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';

8

SHOW GRANTS;

_3

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

SHOW GRANTS;

_29 dari contoh terakhir kemampuan untuk mengontrol akses pengguna lain ke database

SHOW GRANTS;

25, Anda dapat mengetikkan

SHOW GRANTS;

_4

Akun kemudian tidak hanya akan memiliki akses penuh ke database

SHOW GRANTS;

25, tetapi juga dapat menentukan apa yang dapat dilakukan pengguna lain di database

Logika 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;

5

Bagaimana 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 pengguna

SHOW GRANTS;

_42 akses hanya baca ke database

SHOW GRANTS;

25, ketik

SHOW GRANTS;

_6

Pengguna ini akan dapat meminta dan mengekstrak data apa pun yang diperlukan dari database

SHOW GRANTS;

25, tetapi tidak dapat membuat perubahan apa pun

Seperti biasa, persamaan global menggunakan cakupan ________50______8

SHOW GRANTS;

_7

Bagaimana 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, dan

SHOW GRANTS;

10 hak istimewa pada objek. Sebagai contoh

SHOW GRANTS;

_8

Bagaimana 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 dan

SHOW GRANTS;

08 hak istimewa

SHOW GRANTS;

_9

Jika 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)

0

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

SHOW GRANTS FOR '<user>'@'<host>';

_0 memberikan hak istimewa tambahan kepada pengguna pada lingkup tertentu, perintah

SHOW GRANTS FOR '<user>'@'<host>';

1 memungkinkan Anda untuk menghapus hak istimewa dari akun

Sintaks dasar

Perintah

SHOW GRANTS FOR '<user>'@'<host>';

1 mencerminkan perintah

SHOW GRANTS FOR '<user>'@'<host>';

0 cukup dekat. Selain dari nama perintah, Anda mencabut hak istimewa dari akun alih-alih memberikannya ke akun

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

_1

Seperti halnya

SHOW GRANTS FOR '<user>'@'<host>';

0, beberapa hak istimewa dapat diberi nama, dipisahkan dengan koma

Menargetkan 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 istimewa

Untuk 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)

_2

Untuk 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)

_3

Dan 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)

_4

Sebaiknya 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)

5

Menggunakan 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 tersebut

Untuk 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)

_6

Sekarang, 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)

_7

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

SHOW GRANTS FOR '<user>'@'<host>';

8 sehingga akun masih dapat membaca nilai dari database

Jika 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)

9

Baris 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 (menggunakan

GRANT UPDATE (due_by) ON library.loans TO 'autorenew'@'localhost';

8). Baris kedua menunjukkan semua hak istimewa dinamis yang diringkas oleh singkatan

GRANT 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, kecuali

SHOW GRANTS FOR '<user>'@'<host>';

8 dicabut dari database

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

3

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

SHOW GRANTS;

_71 telah ditinggalkan demi hak istimewa dinamis yang lebih terperinci untuk memungkinkan tingkat kontrol yang lebih baik

Untuk 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 MySQL

Jika Anda belum menggunakan hak istimewa

SHOW GRANTS;

_71, MySQL menyarankan agar Anda menggunakan subset dari hak istimewa dinamis yang Anda perlukan daripada memberikan hak istimewa

SHOW GRANTS;

71 ke akun baru

Kesimpulan

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 bagaimana

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

SHOW 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 luas

Memahami 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

Apa saja hak istimewa di MySQL?

Nilai tipe_priv yang diizinkan pada tingkat tabel adalah ALTER , CREATE VIEW , CREATE , DELETE , DROP , GRANT OPTION , INDEX , INSERT , REFERENCES , SELECT , SHOW VIEW , TRIGGER , . Hak istimewa tingkat tabel berlaku untuk tabel dasar dan tampilan. . Table-level privileges apply to base tables and views.

Berapa banyak jenis hak istimewa yang tersedia di SQL?

Ada berbagai jenis hak istimewa. SELECT , INSERT , UPDATE , DELETE , TRUNCATE , REFERENCES , TRIGGER , CREATE , CONNECT , TEMPORARY , EXECUTE , USAGE , SET dan ALTER SYSTEM . Hak istimewa yang berlaku untuk objek tertentu bervariasi tergantung pada jenis objek (tabel, fungsi, dll. ).

Apa hak istimewa dalam SQL?

Hak istimewa adalah hak untuk mengeksekusi tipe pernyataan SQL tertentu atau untuk mengakses objek pengguna lain. .
Hubungkan ke database (buat sesi)
Buat tabel
Pilih baris dari tabel pengguna lain
Jalankan prosedur tersimpan pengguna lain

Apa hak istimewa penggunaan MySQL?

PENGGUNAAN adalah cara untuk memberi tahu MySQL bahwa ada akun tanpa memberikan hak istimewa apa pun ke akun tersebut . Mereka hanya memiliki izin untuk menggunakan server MySQL, maka PENGGUNAAN. Itu sesuai dengan baris di `mysql`. tabel `pengguna` tanpa set hak istimewa.