Data Control
Language
(DCL)
Pengertian
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.
GRANT - allow users access privileges to the database
REVOKE - withdraw users access privileges given by using the
GRANT command
Manfaat
1. Membatasi User akses data table baik untuk melihat struktur table
melihat data maupun melakukan operasi manipulasi data seperti Insert,
Update, Delete data
2. Membatasi user akses view database baik melihat, maupun merubauh
struktur view
3. Membatasi user akses strored procedure baik execute dan merubah
struktur SQL didalam stored procedure tersebut.
4. Membatasi Host akses yang digunakan user baik local host([Link]),
user akses dalam jaringan LAN dan Remot IP Public.
5. Memberikan timer user akses database pada saat jam kerja saja
misalnya diluar jam kerja user tidak dapat melakukan akses database.
6. Memberikan otoritas user untuk create tabel, view function, stored
procedure , trigger
PRIVILEGE
SystemPrivileges: – Berkaitan dengan akses ke
database
Ex: koneksi, membuat tabel, membuat index, dll
ObjectPrivileges: – Berkaitan dengan manipulasi isi
dari objek database
ex:
Insert data pada table, mengubah data pada
tabel, dll
System Privileges
Object Privileges
CREATE USER
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
new_user adalah nama yang diberikan untuk akun user baru dan IDENTIFIED BY
‘password’ merupakan passcode atau kata sandi untuk user tersebut. Kedua value ini
dapat diganti. Cukup tambahkan value yang sudah Anda buat ke dalam tanda kutip.
GRANT ALL PRIVILEGES ON * . * TO 'new_user'@'localhost';
memberikan semua akses database kepada user baru
FLUSH PRIVILEGES;
Flush hak akses yang diberikan
Flush Privileges adalah sinonim untuk reload. Perintah reload menyuruh server untuk
membaca ulang tabel hak akses.
User Privileges Level
Hak Akses Global
GRANT SELECT ON *.* TO ‘userA’@’localhost’;
Hak Akses Level Database
GRANT SELECT ON penjualan.* TO 'userA'@'localhost';
Hak Akses Level Tabel
GRANT SELECT ON [Link] TO
'userA'@'localhost';
Hak Akses Level Kolom
GRANT SELECT (id_barang,nama_barang) ON
[Link] TO 'userA'@'localhost';
Role
Role merupakan kumpulan
dari privileges yang
dikelompokkan menjadi
satu.
Role dapat terdiri dari
privileges maupun role yang
lain
Diciptakan untuk
mempermudah
pengelolaanhak akses yang
akan diberikan kepada user.
Create Role
Membuat role
CREATE ROLE 'app_developer', 'app_read', 'app_write';
GRANT PRIVILEGE ke ROLE
GRANT ALL ON hr.* TO 'app_developer';
GRANT SELECT ON hr.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON hr.* TO 'app_write';
Grant role to user
GRANT 'app_developer' TO 'dev1'@'localhost';
GRANT 'app_read' TO 'rino'@'localhost'
GRANT 'app_read' TO 'siska'@'localhost';
GRANT 'app_read', 'app_write' TO 'hasrul'@'localhost';
WITH GRANT OPTION dan
PUBLIC
Dengan penambahan WITH GRANT OPTION pada saat
memberikan suatu object privilege, maka akan membuat user
yang diberi object privilege dapat memberikan hak yang
diberikan atasnya itu kepada user yang lain.
GRANT SELECT, INSERT ON [Link] TO
‘UserA'@'localhost' WITH GRANT OPTION;
REVOKE
REVOKE dapat di buat untuk menghapus seluruh atau salah satu hak akses saja. :
REVOKE jenis_hak_akses (kolom1,kolom2) ON nama_database.nama_tabel FROM
nama_user@lokasi_user;
jenis_hak_akses adalah privileges yang akan dihapus dari user tersebut.
kolom1,kolom2 adalah nama judul kolom yang hak aksesnya akan dicabut. Jika tidak
diisi, maka dianggap query REVOKE akan menghapus pada seluruh kolom.
nama_database adalah nama database yang ingin dihapuskan hak aksesnya.
nama_database bisa ditulis dengan tanda bintang (*) untuk merujuk kepada seluruh
database.
nama_tabel adalah nama tabel yang ingin dihapuskan hak aksesnya. nama_tabel bisa
ditulis dengan tanda bintang (*) untuk merujuk kepada seluruh tabel.
nama_user adalah nama dari user yang akan dihapus hak aksesnya.
lokasi_user adalah alamat IP dari user yang akan dihapus hak aksesnya.
DROP and RENAME
DROP USER user [, user] ...
RENAME USER old_user TO new_user
Show all user
Show user privileges
Latihan
1. Buat database baru, silakan download di [Link]
2. Buat user SCOTT, DEHAAN, dan KOCHHAR
3. Buatlah role CTABLER yang memberikan akses untuk dapat membuat tabel di
database HR pada user SCOTT?
4. Buatlah sebuah tabel sederhana di user SCOTT, DEHAAN dan KOCHHAR.
Apakah semua user dapat membuat tabel? Jelaskan alasannya.
5. Berikan privilege ke user SCOTT untuk dapat melakukan perintah select,
insert, update pada table JOBS dan dapat memberikan privilege tersebut ke
user lain
6. SCOTT akan memberikan privilege ke table JOBS berikut ini (LOGIN USER
SCOTT):
a. Kepada DEHAAN, SCOTT hanya memberikan akses untuk perintah SELECT
b. Kepada KOCHHAR, SCOTT hanya memberikan akses untuk perintah INSERT