From 59bd9f3263333dac8ba74296c49d6ec5e9835629 Mon Sep 17 00:00:00 2001 From: Fairus Atoir <36189723+fairusatoir@users.noreply.github.com> Date: Wed, 5 Jan 2022 22:17:48 +0700 Subject: [PATCH] feat: Menambahkan materi Data control language (#52) * feat: Menambah Query Grant * feat:Menambah query grant dan revoke * fix: memperbaiki typo pada penulisan * fix: Codacy Production rules * fix: Codacy Production rules Co-authored-by: Aditya Fitriana NS <89055857+AdityaFitrianaNS@users.noreply.github.com> --- .../1_Menerima_Akses/README.md | 106 +++++++++++++++++ .../2_Menolak_Akses/README.md | 108 ++++++++++++++++++ 2 files changed, 214 insertions(+) diff --git a/Basic/04_Data_Control_Language/1_Menerima_Akses/README.md b/Basic/04_Data_Control_Language/1_Menerima_Akses/README.md index e69de29..a6a77f4 100644 --- a/Basic/04_Data_Control_Language/1_Menerima_Akses/README.md +++ b/Basic/04_Data_Control_Language/1_Menerima_Akses/README.md @@ -0,0 +1,106 @@ +# Memberi Privileges + +> GRANT merupakan perintah untuk memberikan Hak Istimewa (Privileges) kepada User yang ada di MySQL agar dapat mengakses objek yang ada di database. + +Secara default yang dapat memberi Hak Istimewa (_Privileges_) kepada user lain adalah user `root` (Super User) karena secara default user `root` memiliki semua _Privileges_. + +_Privileges_ yang bisa diberikan adalah : + +| _Privileges_ | Diskripsi | +| ------------ | ------------------------------------------------------ | +| SELECT | Hak untuk Menampilkan data yang sudah ada | +| INSERT | Hak untuk memasukan data | +| UPDATE | Hak untuk mengubah data yang sudah ada | +| DELETE | Hak untuk menghapus data yang sudah ada | +| INDEX | Hak untuk membuat atau menghapus Index | +| CREATE | Hak untuk membuat tabel baru | +| ALTER | Hak untuk mengubah tabel yang sudah ada | +| DROP | Hak untuk menghapus tabel yang sudah ada | +| GRANT OPTION | Hak untuk memberi atau mencabut akses kepada User lain | +| ALL | Semua Hak _Privileges_ | + +## Sintak + +```sql +GRANT hak_akses ON nama_objek TO user; +``` + +Selalu simpan perubahan yang dilakukan dengan sintak : + +```sql +FLUSH Privileges; +``` + +## Query + +Untuk contoh di materi ini, saya menggunakan : + +User : `bell_user` + +Database : `Sekolah` + +tabel : `Siswa` + +### Membuat User Baru + +```sql +CREATE USER 'bell_user'@'localhost' IDENTIFIED BY 'password'; +``` + +**User** baru yang baru dibuat tidak memiliki _Privileges_ sama sekali. + +Sehingga jika menjalankan `SELECT * FROM Siswa` akan mengeluarkan error + +> SELECT command denied to user 'bell_user'@'localhost' for table 'Siswa' + +### Memberi satu Privileges saja + +Memberikan satu _Privileges_ (`SELECT` dan `INSERT`) ke User `bell_user` terhadap semua objek didalam database `Sekolah` + +```sql +GRANT SELECT ON Sekolah.* TO 'bell_user'@'localhost'; + +GRANT INSERT ON Sekolah.* TO 'bell_user'@'localhost'; +``` + +### Memberi dua atau lebih Privileges + +Memberikan 2 atau lebih _Privileges_ ke User `bell_user` terhadap semua objek didalam database `Sekolah`. + +```sql +GRANT SELECT,INSERT,CREATE ON Sekolah.* TO 'bell_user'@'localhost'; +``` + +### Memberi Privileges terhadap 1 Kolom + +_Privileges_ juga bisa diatur untuk hanya bisa mengakses beberapa kolom (`id`,`name`) dari tabel `Siswa` yang ada didalam database `Sekolah` + +Untuk Query nya, nama kolom ditulis di sebelah _Privileges_ dan didalam kurung `()` + +```sql +GRANT SELECT(id,name) ON Sekolah.Siswa TO 'bell_user'@'localhost'; +``` + +### Memberikan Semua Privileges terhadap 1 Tabel + +Memberikan semua _Privileges_ ke tabel `Siswa` di dalam database `Sekolah` + +```sql +GRANT ALL ON Sekolah.Siswa TO 'bell_user'@'localhost'; +``` + +### Memberikan Semua Privileges terhadap 1 database + +Memberikan semua _Privileges_ ke database `Sekolah` + +```sql +GRANT ALL ON Sekolah TO 'bell_user'@'localhost'; +``` + +### Membuat Super User + +Membuat user baru yang memiliki semua _Privileges_ seperti user `root`. + +```sql +GRANT ALL ON * . * TO 'bell_user'@'localhost'; +``` diff --git a/Basic/04_Data_Control_Language/2_Menolak_Akses/README.md b/Basic/04_Data_Control_Language/2_Menolak_Akses/README.md index e69de29..9d11ecc 100644 --- a/Basic/04_Data_Control_Language/2_Menolak_Akses/README.md +++ b/Basic/04_Data_Control_Language/2_Menolak_Akses/README.md @@ -0,0 +1,108 @@ +# Mencabut Privileges + +> REVOKE merupakan perintah untuk mencabut Hak Istimewa (Privileges) dari User yang ada di MySQL agar tidak dapat mengakses objek yang ada di database. + +Secara default yang dapat mencabut Hak Istimewa (_Privileges_) dari user lain adalah user `root` (Super User) karena secara default user `root` memiliki semua _Privileges_. + +**Sebisa mungkin jangan mencabut _Privileges_ dari user** `root` + +_Privileges_ yang bisa dicabut adalah : + +| _Privileges_ | Deskripsi | +| ------------ | ------------------------------------------------------ | +| SELECT | Hak untuk Menampilkan data yang sudah ada | +| INSERT | Hak untuk memasukan data | +| UPDATE | Hak untuk mengubah data yang sudah ada | +| DELETE | Hak untuk menghapus data yang sudah ada | +| INDEX | Hak untuk membuat atau menghapus Index | +| CREATE | Hak untuk membuat tabel baru | +| ALTER | Hak untuk mengubah tabel yang sudah ada | +| DROP | Hak untuk menghapus tabel yang sudah ada | +| GRANT OPTION | Hak untuk memberi atau mencabut akses kepada User lain | +| ALL | Semua Hak _Privileges_ | + +## Syntax + +```sql +REVOKE hak_akses ON nama_objek FROM user; +``` + +Selalu simpan perubahan yang dilakukan dengan sintak : + +```sql +FLUSH Privileges; +``` + +## Syntak Query + +Untuk contoh di materi ini, saya menggunakan : + +User : `bell_user` + +Database : `Sekolah` + +Tabel : `Siswa` + +### Mencabut satu Privileges saja + +Mencabut satu _Privileges_ (`SELECT` dan `INSERT`) dari User `bell_user` terhadap semua objek didalam database `Sekolah` + +```sql +REVOKE SELECT ON Sekolah.* FROM 'bell_user'@'localhost'; + +REVOKE INSERT ON Sekolah.* FROM 'bell_user'@'localhost'; +``` + +Setelah mencabut _Privileges_, jika menjalankan `SELECT * FROM Siswa` akan mengeluarkan error + +> SELECT command denied to user 'bell_user'@'localhost' for table 'Siswa' + +> INSERT command denied to user 'bell_user'@'localhost' for table 'Siswa' + +### Mencabut dua atau lebih Privileges + +Mencabut 2 atau lebih _Privileges_ (`SELECT` dan `INSERT`) dari User `bell_user` ke terhadap semua objek didalam database `Sekolah`. + +```sql +REVOKE SELECT,INSERT ON Sekolah.* FROM 'bell_user'@'localhost'; +``` + +### Mencabut Privileges terhadap 1 Kolom + +Pencabutan _Privileges_ juga bisa diatur hanya untuk beberapa kolom (`id`) di tabel `siswa` yang ada didalam database `Sekolah` + +Untuk Query nya, nama kolom ditulis di sebelah _Privileges_ dan didalam kurung `()` + +```sql +REVOKE SELECT(id) ON Sekolah.Siswa FROM 'bell_user'@'localhost'; +``` + +Sehingga saat menjalankan `SELECT * FROM Siswa` akan mengeluarkan error karena tidak memiliki _Privileges_ untuk melihat kolom `id` di kolom `Siswa` + +> SELECT command denied to user 'bell_user'@'localhost' for column 'id' in table 'Siswa' + +### Mencabut Semua Privileges terhadap 1 Tabel + +Mencabut semua _Privileges_ dari tabel `Siswa` di dalam database `Sekolah` + +```sql +REVOKE ALL ON Sekolah.Siswa FROM 'bell_user'@'localhost'; +``` + +### Mencabut Semua Privileges terhadap 1 database + +Mencabut semua _Privileges_ dari database `Sekolah` + +```sql +REVOKE ALL ON Sekolah FROM 'bell_user'@'localhost'; +``` + +### Mencabut Semua Hak Akses + +Mencabut semua _Privileges_ yang dimiliki user `bell_user`. + +Sebisa mungkin **jangan** melakukan **Pencabutan Semua Hak Akses** dari user `root` + +```sql +REVOKE ALL ON * . * FROM 'bell_user'@'localhost'; +```