Bahasa Kontrol Data (DCL)

Bahasa Kontrol Data adalah bagian dari Bahasa Kueri Terstruktur. Administrator basis data menggunakan DCL untuk mengonfigurasi akses keamanan ke basis data relasional. Ini melengkapi Bahasa Definisi Data , yang menambah dan menghapus objek basis data, dan Bahasa Manipulasi Data, yang mengambil, menyisipkan, dan memodifikasi konten basis data.

DCL adalah subset SQL yang paling sederhana, karena hanya terdiri dari tiga perintah: GRANT, REVOKE, dan DENY. Gabungan, ketiga perintah ini memberi administrator fleksibilitas untuk mengatur dan menghapus izin basis data secara terperinci.

Menambahkan Izin Dengan Perintah GRANT

Perintah GRANT menambahkan izin baru ke pengguna database. Ini memiliki sintaks yang sangat sederhana, didefinisikan sebagai berikut:

HIBAH [hak istimewa]
PADA [objek] KEPADA [pengguna][DENGAN PILIHAN PEMBERIAN]

Berikut ikhtisar pada setiap parameter yang dapat Anda berikan dengan perintah ini:

  • Privilege — dapat berupa kata kunci ALL (untuk memberikan berbagai izin) atau izin basis data tertentu atau serangkaian izin. Contohnya termasuk CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE dan CREATE VIEW.
  • Objek — dapat berupa objek basis data apa saja. Opsi hak istimewa yang valid bervariasi berdasarkan tipe objek database yang Anda sertakan dalam klausul ini. Biasanya, objek akan berupa database, fungsi, prosedur tersimpan, tabel atau tampilan.
  • Pengguna — dapat berupa pengguna basis data apa pun. Anda juga dapat mengganti peran untuk pengguna dalam klausul ini jika Anda ingin menggunakan keamanan basis data berbasis peran.
  • WITH GRANT OPTION opsional di akhir perintah GRANT, Anda tidak hanya memberikan izin yang ditentukan dalam pernyataan SQL kepada pengguna tertentu, tetapi juga memberikan izin kepada pengguna untuk memberikan izin yang sama lebih lanjut kepada pengguna database lainnya . Untuk alasan ini, gunakan klausa ini dengan hati-hati.

Misalnya, asumsikan Anda ingin memberi pengguna Joe kemampuan untuk mengambil informasi dari tabel karyawan dalam database bernama HR . Gunakan perintah SQL berikut:

GRANT SELECT
PADA HR.employeesTO Joe

Joe dapat mengambil informasi dari tabel karyawan. Namun, dia tidak akan dapat memberikan izin kepada pengguna lain untuk mengambil informasi dari tabel tersebut karena skrip DCL tidak menyertakan klausa WITH GRANT OPTION.

Mencabut Akses Database

Perintah REVOKE menghapus akses database dari pengguna yang sebelumnya diberikan akses tersebut. Sintaks untuk perintah ini didefinisikan sebagai berikut:

BATALKAN [PILIHAN PEMBERIAN UNTUK] [izin]
PADA [objek]DARI [pengguna][CASCADE]

Berikut ikhtisar parameter untuk perintah REVOKE:

  • Izin — menentukan izin basis data untuk dihapus dari pengguna yang teridentifikasi. Perintah mencabut pernyataan GRANT dan DENY yang sebelumnya dibuat untuk izin yang teridentifikasi.
  • Objek — dapat berupa objek basis data apa pun. Opsi hak istimewa yang valid bervariasi berdasarkan tipe objek database yang Anda sertakan dalam klausa ini. Biasanya, objek akan berupa database, fungsi, prosedur tersimpan, tabel, atau tampilan.
  • Pengguna — dapat berupa pengguna basis data apa pun. Anda juga dapat mengganti peran untuk pengguna dalam klausul ini jika Anda ingin menggunakan keamanan basis data berbasis peran.
  • Klausa GRANT OPTION FOR menghapus kemampuan pengguna tertentu untuk memberikan izin tertentu kepada pengguna lain. Jika Anda menyertakan klausa GRANT OPTION FOR dalam pernyataan REVOKE, izin utama tidak dicabut. Klausa ini hanya mencabut pemberian kemampuan.
  • Opsi CASCADE juga mencabut izin yang ditentukan dari setiap pengguna yang diberikan izin oleh pengguna tertentu.

Perintah berikut mencabut izin yang diberikan kepada Joe pada contoh sebelumnya:

REVOKE SELECT
ON HR.employeesFROM Joe

Secara Eksplisit Menolak Akses Database

Perintah DENY secara eksplisit mencegah pengguna menerima izin tertentu. Fitur ini bermanfaat saat pengguna adalah anggota peran atau grup yang diberi izin, dan Anda ingin mencegah pengguna individual tersebut mewarisi izin dengan membuat pengecualian. Sintaks untuk perintah ini adalah sebagai berikut:

DENY [izin]
PADA [objek]
KE [pengguna]

Parameter untuk perintah DENY identik dengan yang digunakan untuk perintah GRANT. Misalnya, jika Anda ingin memastikan bahwa Matthew tidak akan pernah menerima kemampuan untuk menghapus informasi dari tabel karyawan, berikan perintah berikut:

DENY DELETE
ON HR.employeesTO Matthew