Home » SQL » Data Control Language: Pengertian – Jenis dan Contohnya

Data Control Language: Pengertian – Jenis dan Contohnya

by Rizki Cahyana
by Rizki Cahyana

Section Artikel

Apa itu DCL dan Mengapa DCL diperlukan?

Data Control Language (DCL) adalah salah satu dari kelompok perintah SQL yang digunakan untuk melakukan kontrol terhadap privilege atau hak akses khusus untuk berinteraksi dengan database. Hak akses khusus ini diperlukan sebagai prasyarat bagi setiap user database untuk melakukan berbagai aksi di database, seperti: membuat object, menghapus object, mengubah object, menampilkan hasil query, dan seterusnya.

Sederhananya, setiap pengguna database hanya dapat melakukan aksi-aksi yang sudah diberikan oleh user dengan kontrol tertinggi di dalam database tersebut. Misalnya, pengguna A hanya diberikan akses untuk membuat dan menampilkan sesuatu di database. Maka, pengguna tersebut hanya dapat melakukan perintah tersebut saja, tidak bisa melakukan ubah data, hapus data, dan seterusnya. Hal ini menjadi penting untuk diketahui karena di dalam dunia kerja dengan banyak pengguna database, manajemen pembagian hak akses seperti ini sangat krusial dan berpengaruh terhadap integritas dan keamanan data.

Apa Saja yang Termasuk ke dalam Perintah DCL?

Berikut ini adalah beberapa perintah DCL:

  • GRANT
  • REVOKE

1. GRANT

Perintah Grant digunakan untuk memberikan hak akses khusus kepada user untuk melakukan aksi tertentu pada object tertentu di database.

Sintaks:

GRANT tipe_privilege
    ON nama_objek
    TO nama_pengguna;

Keterangan:

  • tipe_privilege — diisi dengan privilege atau hak akses yang dimaksud (lihat tabel di bawah).
  • nama_objek — diisi dengan objek-objek database, seperti: database, table, view, trigger, dan seterusnya.
  • nama_pengguna — diisi dengan nama pengguna database yang ingin diberikan privilege.

Berikut ini adalah beberapa contoh tipe privilege:

Tipe PrivilegeKeterangan
ALL PRIVILEGEMemberikan seluruh akses secara penuh (full access)
CREATEMemberikan hak akses untuk membuat database atau objek database
DROPMemberikan hak akses untuk menghapus database atau objek database
SELECTMemberikan hak akses untuk melakukan query ke database
INSERTMemberikan hak akses untuk menambahkan record / data baru ke tabel
UPDATEMemberikan hak akses untuk mengubah record / data di tabel
DELETEMemberikan hak akses untuk menghapus record / data di tabel
Tabel Contoh Tipe Privilege

Sebelum menggunakan perintah Grant, pertama buat user baru terlebih dahulu di database menggunakan sintaks di bawah ini:

CREATE USER 'nama_user'@'localhost' IDENTIFIED BY 'password';

Sebagai catatan, sebelum membuat user baru, masuklah terlebih dahulu sebagai user root dengan menggunakan perintah:

mysql -u root

USE mysql

Setelah itu kita akan membuat user baru dengan nama ‘DosenIT‘ dengan passworddosenit.com‘. Gunakan perintah di bawah ini:

CREATE USER 'DosenIT'@'localhost' IDENTIFIED BY 'dosenit.com';

Asumsikan bahwa kita akan memberikan akses database kepada user tersebut. Misalnya kita akan membuat database bernama “db_kampus”.

CREATE DATABASE db_kampus;

Setelah database-nya berhasil dibuat, langkah selanjutnya adalah memberikan akses tersebut kepada user tersebut. Untuk keperluan tersebut, kita dapat menggunakan perintah GRANT mengikuti sintaks yang telah dijabarkan di atas. Misalnya saat ini kita hanya akan memberikan hak akses untuk membuat, menambahkan, dan melakukan query terhadap objek-objek di database “db_kampus”. Maka gunakanlah perintah di bawah ini:

GRANT CREATE, INSERT, SELECT 
  ON db_kampus.* 
  TO 'DosenIT'@'localhost';  

FLUSH PRIVILEGES;

Sebagai catatan, perintah FLUSH PRIVILEGES digunakan setiap kali selesai memberikan atau menarik kembali hak akses user.

Setelah itu, mari kita login kembali ke mysql menggunakan akun baru tersebut. Lakukan dengan menggunakan perintah di bawah ini:

mysql -u DosenIT -p
-- masukkan password

USE db_kampus;

Setelah berhasil masuk dan menggunakan database db_kampus, cobalah perintah-perintah yang berhubungan dengan CREATE, INSERT, dan SELECT. Silakan kreasikan sebebas mungkin yang Anda inginkan. Anda juga boleh menggunakan perintah-perintah di bawah ini untuk bahan uji coba.

-- membuat tabel mahasiswa
CREATE TABLE mahasiswa(
	id INT AUTO_INCREMENT PRIMARY KEY,
    nim VARCHAR(12) UNIQUE NOT NULL,
    nama VARCHAR(30)
);

-- memasukkan data mahasiswa ke tabel
INSERT INTO mahasiswa VALUES
(NULL, '2000001', 'Satoshi'),
(NULL, '2000002', 'Serena');

-- melakukan query semua data di tabel mahasiswa
SELECT * FROM mahasiswa;

Perintah-perintah yang berhubungan dengan CREATE, INSERT, dan SELECT akan berhasil dieksekusi di user ini dikarenakan telah diberikan akses sebelumnya oleh user root menggunakan perintah GRANT. Tetapi bagaimana dengan UPDATE, DELETE, dan lainnya yang tidak didefinisikan sebelumnya? Silakan dicoba menggunakan kreasi perintah sendiri atau menggunakan contoh di bawah ini.

-- mengubah nama mahasiswa
UPDATE mahasiswa SET nama = 'Serena Kalos Queen' WHERE nim = '2000002'; 

-- menghapus data mahasiswa 
DELETE FROM mahasiswa WHERE nim = '2000001';

Bagaimana hasilnya? Tentunya kita akan mendapatkan pesan error seperti gambar di bawah ini.

2. REVOKE

Perintah Revoke digunakan untuk menarik kembali / mencabut / membatalkan hak akses khusus yang sebelumnya telah diberikan melalui perintah Grant.

Sintaks:

REVOKE tipe_privilege
  ON nama_objek
  FROM nama_pengguna;
  • tipe_privilege — diisi dengan privilege atau hak akses yang dimaksud (lihat tabel di bagian atas).
  • nama_objek — diisi dengan objek-objek database, seperti: database, table, view, trigger, dan seterusnya.
  • nama_pengguna — diisi dengan nama pengguna database yang ingin dicabut kembali hak akses atau privilege-nya.

Untuk contoh penggunaannya, mari kita tarik kembali hak akses SELECT dari user DosenIT.

REVOKE SELECT 
  ON db_kampus.* 
  FROM 'DosenIT'@'localhost';
  
FLUSH PRIVILEGES;

Setelah mengeksekusi perintah di atas, seharusnya saat ini user DosenIT sudah tidak dapat menggunakan perintah SELECT. Perhatikan gambar di bawah ini.

Hal ini berlaku untuk semua perintah yang lain. Selamat mencoba dan mengkreasikan sendiri.

Simpulan

Pembahasan yang ada pada tulisan ini hanya mengakomodasi basic dari Data Control Language (DCL). Akan tetapi, walaupun dikategorikan sebagai basic, tulisan ini cukup baik untuk pijakan awal atau refresh untuk semua pihak dalam rangka mengetahui manajemen akun pengguna di MySQL database beserta perintah dasar DCL. Keep up the good work!

You may also like