Dosen pengampu :
Disusun Oleh :
Puji syukur senantiasa kita panjatkan ke hadirat Tuhan yang maha Esa, yang
berkuasa atas seluruh alam semesta, karena berkat rahmat, taufik serta hidayah-Nya
jugalah maka Makalah mengenai Fungsi dari Komponen-komponen SQL DCL mata kuliah
Sistem Basis Data ini dapat diselesaikan tepat pada waktunya.
Kami menyadari bahwa dalam penyusunan tugas Makalah ini tidak terlepas dari
kesalahan dan sangat jauh dari sempurna. Oleh sebab itu, kami sangat mengharapkan kritik
dan saran yang sifatnya membangun demi sempurnanya laporan ini.
Kami berharap semoga laporan ini dapat digunakan sebagaimana mestinya dan bisa
memberikan manfaat bagi kita semua. Semoga Tuhan yang maha Esa mencurahkan rahmat
dan karunia-Nya kepada kita semua.
Kelompok 7
ii
DAFTAR ISI
KATA PENGANTAR...........................................................................................................ii
DAFTAR ISI.........................................................................................................................iii
BAB I PENDAHULUAN......................................................................................................1
BAB II PEMBAHASAN.......................................................................................................2
2.4 Grant.............................................................................................................................7
2.5 Revoke..........................................................................................................................8
3. 1 Kesimpulan...............................................................................................................11
DAFTAR PUSTAKA..........................................................................................................12
iii
BAB I PENDAHULUAN
SQL adalah sekumpulan perintah khusus yang digunakan untuk mengakses data
dalam database relasional. SQL merupakan sebuah bahasa komputer yang mengikuti
standar ANSI (American Nasional Standard Institute) yang digunakan dalam manajemen
database relasional. Dengan SQL, kita dapat mengakses database, menjalankan query
untuk mengambil data dari database, menambahkan data ke database, menghapus data di
dalam database, dan mengubah data di dalam database. Saat ini hampir semua server
database yang ada mendukung SQL untuk melakukan manajemen datanya. Terdapat 3
(tiga) jenis perintah SQL, yaitu DDL, DML dan DCL.
Pada makalah ini akan membahas jenis dari perintah DCL, fungsi beserta komponen
komponennya. DCL atau Data Control Language DCL merupakan perintah SQL yang
berhubungan dengan pengaturan hak akses user, baik terhadap server, database, tabel
maupun field. Perintah SQL yang termasuk dalam DCL antara lain: Create Database,
Create User, Drop User, Grant, Revoke.
Tujuannya yaitu untuk memenuhi tugas mata kuliah Sistem Basis Data dan juga
untuk memahami dan mendalami materi mengenai database fungsi dan komponen pada
SQL DCL.
1
BAB II PEMBAHASAN
Database merupakan objek basis data yang menempati urutan paling atas. Dalam
pembuatannya, database harus didahulukan, dan kemudian diikuti dengan pembuatan tabel
beserta kolomnya. Setelah tabel terbuat, kita dapat memasukkan beberapa baris data.
(Nugroho, 2008).
SINTAX:
CREATE DATABASE [IF NOT EXISTS] nama_db
Pada sintak di atas, kita membuat database baru dengan nama nama_db. Perhatikan contoh
berikut:
Dari perintah di atas, pernyataan “Query OK, 1 row affected (0.00 sec)”
menyatakan perintah telah dijalankan oleh server dan berhasil, dengan kata lain database
coba_db berhasil dibuat dalam server.
Dengan menggunakan perintah standar di atas, database server akan menjalankan perintah
(membuat database baru), jika database yang bernama nama_db belum pernah ada di
2
dalam server. Jika database nama_db sudah ada di dalam server, maka kegagalan yang
akan kita dapatkan. Berikut adalah contoh kesalahannya:
Dari contoh perintah di atas, pernyataan yang berbunyi “Can’t create database
‘coba_db’; database exists” menandakan perintah yang dijalankan tidak
diterima karena database coba_db telah ada di dalam server.
Jika akan mengabaikan kondisi server, yaitu kita tidak mau tahu apakah di dalam server
sudah ada database yang sama dengan yang akan kita buat atau tidak, maka kita harus
menggunakan opsi [IF NOT EXISTS]. Sehingga perintahnya menjadi:
Dengan cara tersebut, server akan selalu menjalankan perintah pembuatan database. Jika
database-nya telah ada, maka database lama akan dihapus.
Jika kita ingin membuat database baru <testDB>, maka pernyataan CREATE
DATABASE akan seperti gambar di bawah ini
Pastikan kita memiliki hak istimewa admin sebelum membuat database apa pun.
Buka command prompt dengan cara tekan ctrl + R keudian ketik cmd lalu enter
Cd
Buka MySQL dengan cara mengetikan cd AppServ\MySQL\bin\MySQL
3
Bila meminta password, masukkan password yang kalian buat (tapi biasanya
password defaultnya “root”)
Setelah MySQL jalan, kita mulai dengan melihat semua database yang telah ada di
situ. Perintahnya: show databases;, biasakan dengan huruf kecil
Dari hasil yang tadi, kita melihat semua database yang telah dibuat sebelumnya,
sekarang kita membuat database baru. Perintahnya: create database latihan;.
Sekarang kita lihat hasilnya, ketikan perintah sebelumnya show databases;
show tables;
+---------------------+
| Tables_in_penjualan |
+---------------------+
| barang |
| pelanggan |
+---------------------+
desc pelanggan;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| id_pelanggan | varchar(5) | NO | PRI | NULL | |
| nm_pelanggan | varchar(30) | NO | | NULL | |
| alamat | text | YES | | NULL | |
| telepon | varchar(20) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
select*from pelanggan;
+--------------+----------------+--------------------------------+------------+---------------------+
| id_pelanggan | nm_pelanggan | alamat | telepon | email |
+--------------+----------------+--------------------------------+------------+---------------------+
4
| P0001 | Achmad_Solihin | Jakarta_Selatan | 0217327762 |
achmatim@gmail.com |
| P0002 | Agus_Rahman | Jl_H_Said,Tangerang | 0217323234 |
agus20@yahoo.com |
| P0003 | Doni_Damara | Jl_Raya_Cimone,Jakarta_Selatan | 0214394379 |
damara@yahoo.com |
| P0004 | Reni_Arianti | Jl_Raya-Dago_No.90 | 0313493583 |
renren@yahoo.co.id |
| P0005 | Dewi_Aminah | Jl_Arjuna_No.40 | 0314584883 |
aminahoke@plasa.com |
| P0006 | Chotimatul_M | RT04_RW02_Kel.Pinangsari | 0219249349 |
fixis@yahoo.co.id |
+--------------+----------------+--------------------------------+------------+---------------------+
select*from barang;
+--------+----------+---------+--------+
| kd_brg | nama_brg | harga | jumlah |
+--------+----------+---------+--------+
| 001 | Meja | 500000 | 3|
| 002 | Lemari | 1500000 | 13 |
| 003 | Kulkas | 3000000 | 2|
| 004 | Televisi | 2500000 | 10 |
+--------+----------+---------+--------+
Pernyataan SQL CREATE USER digunakan untuk membuat pengguna SQL baru.
Sintak:
GRANT CONNECT KE nama pengguna yang DIIDENTIFIKASI DENGAN
kata sandi
5
Untuk membuat akun pengguna MySQL baru, jalankan perintah berikut:
Untuk memberikan akses dari host lain, ubah bagian hostname (localhost)
dengan IP mesin jarak jauh. Misalnya, untuk memberikan akses dari mesin dengan IP
10.5.0.4 kita akan menjalankan:
Untuk membuat pengguna yang dapat terhubung dari host mana pun, gunakan
wildcard ‘%’ sebagai bagian host:
Opsi ini biasanya digunakan oleh para web master yang menginginkan MySQL
server di tempat terpisah dengan web server.
(Programming, 2014).
Contoh:
6
| root | localhost | |
| Dimas |% | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1 |
| root | 127.0.0.1 | |
| root | ::1 | |
| pma | localhost | |
| Achmad_Solihin | % | |
+----------------+-----------+-------------------------------------------+
Meskipun database telah dihapus, user atau pengguna untuk database tersebut tidak
akan ikut dihapus. Statement DROP USER 'namauser'@'localhost' bisa
digunakan apabila ingin menghapus nama user.
User men-spesifikasikan user yang ingin dihapus. Oracle Database tidak akan
menghapus users yang skemanya berisi object, kecuali dengan menggunakan statement
CASCADE atau jika user’s object sudah dihapus terlebih dahulu. CASCADE digunakan
untuk menghapus semua object di user’s schema sebelum menghapus user. Jika user’s
schema terdiri dari table, maka Oracle Database akan menghapus table dan relasi pada
table di skema lain (mengacu pada primary dan unique keys pada tables tersebut).
7
| root | localhost | |
| root | 127.0.0.1 | |
| root | ::1 | |
| pma | localhost | |
| Achmad_Solihin | % | |
+----------------+-----------+----------+
2.4 Grant
Fungsi GRANT adalah memberi GRANT privileges pada berbagai objek database di
MySQL. Perintah untuk memberikan hak izin akses bagi user di MySQL agar dapat
mengakses database, tabel dan kolom. Selain itu juga dapat menambahkan user baru
dengan perintah Grant ini. Ada hal yang harus diperhatikan jika melakukan perubahan izin
akses pada user MySQL yang masih aktif bekerja tidak langsung bisa menerapkan
perubahan meski sudah melakukan flush privileges. Konfigurasi ini berlaku ketika user
sudah menutup koneksi kemudian melakukan koneksi kembali. Kita kemudian dapat
melihat hak istimewa yang diberikan kepada pengguna menggunakan perintah SHOW
GRANTS. Izin ini bisa berupa kombinasi SELECT, INSERT, UPDATE, DELETE,
INDEX, CREATE, ALTER, DROP, GRANT OPTION atau ALL.
Izin akses penuh ini digunakan untuk mengakses seluruh database dalam server.
Untuk memberikan izin Anda harus terlebih dahulu memilih database mysql dengan
perintah use. Selanjutnya lakukan perintah berikut:
Perintah diatas akan memberikan izin akses penuh setara dengan root. Sebaiknya hal
ini tidak boleh dilakukan. Option Identified By nama password akan menerapkan user
tersebut agar tetap memasukkan password saat mengakses database. Jika anda tidak
8
memberikan option password maka user tersebut dapat mengakses database tanpa
password.
Penyertaan With Grand Option akan memberikan hak penuh pada user sehingga user
tersebut juga mampu melakukan perintah Grant tertentu pada user lainnya. Namun terdapat
kekurangan ketika kita sebelumnya tidak memilih database MySQL maka server akan
mengabaikan akses Reload, Shutdown, Process, File dan Grant. Berikut ini contoh jika kita
tidak menyertakan option password.
Perintah diatas akan memasukan user dengan menggunakan perintah Grant ini
karena sebelumnya user tersebut belum ada. Serta memperbolehkan user tersebut untuk
mengakses database tanpa password. Agar tidak terjadi sesuatu sebaiknya jangan
melakukan hal ini.
(Oracle, 2022).
Perintah/query Grant:
GRANT select, insert, update ON penjualan TO pelanggan;
FLUSH PRIVILEGES;
Setelah perintah Grant selesai dibuat, cek hak akses yang sudah dibuat seperti:
Menggunakan perintah update yaitu :
update pelanggan set nm_pelanggan = 'Gresnia_Artha' where id_pelanggan = 'P0001';
Menjadi :
select nm_pelanggan from pelanggan;
+---------------+
| nm_pelanggan |
+---------------+
| Gresnia_Artha |
| Agus_Rahman |
| Doni_Damara |
| Reni_Arianti |
9
| Dewi_Aminah |
| Chotimatul_M |
+---------------+
Selain hak akses (Grant) yang sudah dibuat, perintahnya akan ditolak (error).
2.5 Revoke
(Taylor, 2019).
Sintak umum:
Hak Akses (field): kita harus memberikan sedikitnya satu hak akses. Untuk setiap
hak akses yang diberikan, dapat juga diberikan daftar field yang diletakkan dalam
kurung, dan dipisahkan dengan tanda koma. Contoh: REVOKE select (nim, nama),
update, insert(nim), …
10
Nama Tabel: merupakan nama tabel yang dikenal hak akses tersebut. Harus ada
sedikitnya satu nama tabel. Dapat menggunakan simbol asterisk (*) untuk mewakili
semua tabel pada database aktif. Penulisan nama tabel dapat juga diikuti oleh nama
database diikuti nama tabel yang dipisahkan dengan tanda titik. Menggunakan
simbol *.* berarti semua database dan semua tabel yang dikenai hak akses tersebut.
Nama Account @namaHost: jika nama account tidak ada, tidak pernah diberikan
hak akses dengan perintah GRANT sebelumnya maka akan terjadi error.
Setelah perintah Revoke selesai dibuat, cek hapus hak akses yang sudah dibuat yaitu:
Hak akses update sudah dihapus (revoke) sehingga tidak bisa melakukan perintah update.
11
BAB III PENUTUP
3. 1 Kesimpulan
Pada pembahasan di atas dapat kita simpulkan bahwa suatu pengerjaan database
memerlukannya perintah termasuk perintah DCL yang merupakan perintah SQL yang
berhubungan dengan pengaturan hak akses user, baik terhadap server, database, tabel
maupun field. Dengan Create Database kita dapat membuat suatu database yang baru,
Create User dapat membuat suatu user yang baru atau pengguna SQL yang baru , Drop
User dapat untuk menghapus user, Grant untuk memberikan hak izin akses bagi user di
MySQL agar dapat mengakses database, tabel dan kolom, lalu Revoke Untuk menghapus
batasan hak akses yang telah diatur dengan menggunakan perintah GRANT tadi.
Soal:
Pembahasan:
1. Pernyataan Create Database dapat ditulis dengan SQL> BUAT DATABASE testDB;
2. Perintah yang harus di jalankan untuk membuat akun pengguna Mysql baru ialah
CREATE USER ‘nama_user’@'localhost' IDENTIFIED BY ‘password_user’;
3. Apabila ingin menghapus nama user kita dapat menggunakan statement DROP USER
'namauser'@'localhost'.
4. Hak istimewa yang diberikan oleh Mysql kepada pengguna menggunakan perintah
SHOW GRANTS bisa berupa kombinasi SELECT, INSERT, UPDATE, DELETE,
INDEX, CREATE, ALTER, DROP, GRANT OPTION atau ALL.
12
5. Fungsi revoke dalam Mysql digunakan untuk menghapus batasan hak akses
yang telah diatur dengan menggunakan perintah GRANT.
13
DAFTAR PUSTAKA
14