June 10, 2026
Basis Data: Keamanan Basis Data
Oleh : Nabilla Dwi Putri Paraswati โ NPM : 2505060059 Program Studi Teknologi Informasi, Fakultas Teknik
Nabilla Paraswati
7 min read
New day, new lab report. Nabil hereee, and today's session is all about Database Security. Ready to explore the breakdown with me? let's goowww!
Pendahuluan
Di dunia yang sudah serba digital ini, data digital adalah aset yang paling berharga, apalagi data digital perusahaan. Jika suatu basis data diretas atau bocor, dampaknya bisa merusak seluruh sistem yang ada. Jadi, keamanan basis data adalah hal yang paling wajib dipikirkan dari awal ketika membangun sistem.
Nah, cara yang paling efektif untuk mengamankan data adalah dengan membatasi penggunanya dengan hak akses. Jadi, tidak semua pengguna bisa melihat, mengubah, atau menghapus data sesuka hati. Di SQL ada sembilan hak akses yang bisa diatur, yaitu SELECT, INSERT, UPDATE, DELETE, REFERENCES, USAGE, TRIGGER, EXECUTE dan UNDER.
Tujuan dari praktikum ini adalah supaya mahasiswa paham cara kerja keamanan basis data, dan bisa mempraktikkan bagaimana cara membagi akses antarpengguna supaya tidak terjadi penyalahgunaan.
Pada praktikum kali ini, perangkat dan tools yang digunakan adalah:
- Laptop dengan koneksi internet
- Sistem Operasi Windows/Mac/Linux
- Perangkat lunak seperti XAMPP (untuk mengaktifkan web server dan MYSQL/MariaDB)
Praktikum
Kita akan langsung masuk ke langkah-langkah implementasi keamanan basis datanya, dimulai dari pembuatan database awal sampai penyelesaian tugas yang ada di modul.
Langkah 1: Setup Database
Pertama, kita buka Command Prompt (CMD) dan login sebagai root . Kalau udah masuk ke MariaDB Monitor, kita buat database baru yang diberi nama db_kampus dengan tiga tabel utama, yaitu: mahasiswa, matakuliah, dan dosen.
Pada praktikum ini saya menggunakan localhost, jika kalian mau, kalian bisa menggunakan commad prompt (CMD)
Dengan memasukkan query berikut :
CREATE DATABASE db_kampus;
USE db_kampus;
CREATE TABLE mahasiswa (
nim CHAR(10) PRIMARY KEY,
nama VARCHAR(50),
jurusan VARCHAR(30)
);
CREATE TABLE matakuliah (
kode_mk CHAR(6) PRIMARY KEY,
nama_mk VARCHAR(50),
sks INT
);
CREATE TABLE dosen (
nip CHAR(10) PRIMARY KEY,
nama VARCHAR(50),
bidang VARCHAR(30)
);CREATE DATABASE db_kampus;
USE db_kampus;
CREATE TABLE mahasiswa (
nim CHAR(10) PRIMARY KEY,
nama VARCHAR(50),
jurusan VARCHAR(30)
);
CREATE TABLE matakuliah (
kode_mk CHAR(6) PRIMARY KEY,
nama_mk VARCHAR(50),
sks INT
);
CREATE TABLE dosen (
nip CHAR(10) PRIMARY KEY,
nama VARCHAR(50),
bidang VARCHAR(30)
);Jika menggunakan localhost, begini gambarannya:
Langkah 2: User Management
Selanjutnya, kita akan membuat tiga pengguna baru yang nantinya akan punya peran yang berbeda-beda dalam sistem. Ketiga pengguna ini akan kita beri nama user_admin, user_mhs, dan user_dosen .
Dengan memasukkan query berikut :
CREATE USER 'user_admin'@'localhost' IDENTIFIED BY 'admin123';
CREATE USER 'user_mhs'@'localhost' IDENTIFIED BY 'mhs123';
CREATE USER 'user_dosen'@'localhost' IDENTIFIED BY 'dosen123';CREATE USER 'user_admin'@'localhost' IDENTIFIED BY 'admin123';
CREATE USER 'user_mhs'@'localhost' IDENTIFIED BY 'mhs123';
CREATE USER 'user_dosen'@'localhost' IDENTIFIED BY 'dosen123';Hasilnya jika menggunakan localhost akan seperti ini:
Langkah 3: GRANT dan REVOKE
Setelah berhasil dibuat, sekarang kita akan mengatur hak aksesnya. user_admin diberi hak akses penuh (ALL PRIVILEGES), sedangkan user_mhs hanya diberi akses terbatas untuk melihat (SELECT) tabel matakuliah saja. Di sini, kita akan mencoba juga untuk menguji perintah REVOKE atau mencabut hak akses dari user_mhs.
Dengan menggunakan query berikut:
-- Akses penuh untuk user_admin
GRANT ALL PRIVILEGES ON db_kampus.* TO 'user_admin'@'localhost';
-- Akses terbatas untuk user_mhs
GRANT SELECT ON db_kampus.matakuliah TO 'user_mhs'@'localhost';
-- Uji revoke akses
REVOKE SELECT ON db_kampus.matakuliah FROM 'user_mhs'@'localhost';
-- Akses penuh untuk user_admin
GRANT ALL PRIVILEGES ON db_kampus.* TO 'user_admin'@'localhost';
-- Akses terbatas untuk user_mhs
GRANT SELECT ON db_kampus.matakuliah TO 'user_mhs'@'localhost';
-- Uji revoke akses
REVOKE SELECT ON db_kampus.matakuliah FROM 'user_mhs'@'localhost';
Jika menggunakan localhost akan seperti ini :
- akses penuh untuk user_admin
- akses terbatas untuk user_mhs
- menguji revoke akses
Langkah 4: RBAC
Langkah selanjutnya yaitu memberikan hak akses. Daripada mengatur hak akses satu-satu untuk banyak dosen, better kita pakai metode RBAC. Jadi, kita buat role yang kita beri nama role_dosen, lalu kita beri hak akses ke peran tersebut, lalu dipasangkan langsung ke user_dosen .
Dengan menggunakan query berikut :
-- Membuat role untuk dosen
CREATE ROLE 'role_dosen';
-- Role dosen boleh SELECT dan INSERT ke tabel mahasiswa
GRANT SELECT, INSERT ON db_kampus.mahasiswa TO 'role_dosen';
-- Berikan role ke user_dosen
GRANT 'role_dosen' TO 'user_dosen'@'localhost';
-- Set role default
SET DEFAULT ROLE 'role_dosen' TO 'user_dosen'@'localhost';-- Membuat role untuk dosen
CREATE ROLE 'role_dosen';
-- Role dosen boleh SELECT dan INSERT ke tabel mahasiswa
GRANT SELECT, INSERT ON db_kampus.mahasiswa TO 'role_dosen';
-- Berikan role ke user_dosen
GRANT 'role_dosen' TO 'user_dosen'@'localhost';
-- Set role default
SET DEFAULT ROLE 'role_dosen' TO 'user_dosen'@'localhost';Jika menggunakan localhost hasilnya akan:
- Membuat role untuk dosen
Disini saya pakai IF NOT EXISTS karena sempat terjadi error yaitu CREATE role failed
- Role dosen boleh SELECT dan INSERT ke tabel mahasiswa
- Berikan role ke user_dosen
- Set role default
Karena ketika menggunakan TO hasilnya error disini saya mengganti kata TO menjadi FOR
Langkah 5: Pengujian
Karena semua langkah sudah dilakukan, selanjutnya adalah memastikan semuanya berjalan sesuai rencana, jadi, kita akan melakukan uji coba login ke masing-masing user.
Uji coba user_mhs :
Pada uji coba ini saya menggunakan Command Prompt (CMD). Pertama, kita akan melakukan login sebagai user_mahasiswa dengan mengetikkan mysql -u user_mhs -p lalu menekan Enter dan memasukkan password sesuai dengan yang ada di langkah 2 (mhs123 ). Gambarannya akan seperti ini:
sebelum masuk ke langkah berikutnya, untuk mengetes akses saya akan memberikan akses ke user_mhs dahulu untuk melakukan pengujian
Setelah dilakukan pengecekan, hasilnya:
Lalu, saya akan memberikan batasan ke user_mhs dengan query PROVOKE
Seteleh melakukan provoke, hasilnya :
Selanjutnya uji coba akses negatif
Jadi, sebelum dicabut, perintah SELECT pada tabel matakuliah sukses dilakukan. Tapi, setelah dilakukan REVOKE, saat mencoba mengakses tabel mahasiswa, sistem langsung memunculkan pesan error Access Denied. Ini artinya pembatasan berhasil.
Uji coba user_dosen
Pertama, kita login sebagai user_dosen dengan mengetikkan mysql -u user_dosen -p dan masukkan password sesuai yang ada di langkah 2. Setelah login lakukan pengecekan berikut:
Melakukan uji coba uji akses positif
Melakukan uji akses negatif
Jadi, user ini dapat melakukan SELECT dan INSERT pada tabel mahasiswa karena peran role_dosen, tetapi ditolak saat mau mengecek tabel dosen.
Uji coba user_admin
Pertama, kita login sebagai admin dengan mengetikkan mysql -u user_admin -p dan memasukkan password sesuai yang ada di langkah 2. Setelah login lakukan pengecekan berikut:
Selanjutnya exist untuk membuat tabel baru
Membuat tabel dab Drop tabel dengan query berikut :
CREATE TABLE temp_tabel (id INT);
DROP TABLE IF EXISTS temp_tabel;CREATE TABLE temp_tabel (id INT);
DROP TABLE IF EXISTS temp_tabel;Pada user admin, admin bisa melakukan apa saja, termasuk membuat dan menghapus tabel baru tanpa adanya error.
Tugas
- Membuat tabel tagihan
- Membuat data dummy untuk tabel tagihan
- Membuat role keuangan
CREATE ROLE 'role_keuangan';CREATE ROLE 'role_keuangan';
- Memberikan hak akses select dan update ke role_keuangan
- Membuat user baru ( user_keuangan)
- Menetapkan role_keuangan ke user_keu
- Mengaktifkan role
Selanjutnya Pengujian
Pengujian
- login dengan user_keu
- Melihat tagihan
Data tagihan berhasil ditampilkan.
- Melakukan perubahan dataatau mengupdate data tagihan
Proses UPDATE data tidak mengalami error
- Mencoba menambah data baru
Kita akan melakukan INSERT atau DELETE karena kita tidak memberikan izin ini ke role ini, jadi sistem harus menolaknya
Muncul pesan error yang menandakan user keuangan sama sekali tidak bisa menambah atau menghapus data yang ada.
Selanjutkan kita akan menguji apakah user_keu tidak mengintip data akademik lainnya
dapat dilihat sistem memberikan pesan error karena user_keu memang hanya diizinkan mengakses bagian tagihan saja
ANALISIS
Dari pengujian yang sudah dilakukan, keamanan basis data yang menggunakan metode RBAC berhasil semuanya., pengguna user_keu ada batasan ruang geraknya. Yang dimana hanya bisa menjalankan fungsi di bagian tagihan saja, dan tidak memiliki akses untuk ke data yang lain
KESIMPULAN
Keamanan basis data adalah memberikan hak ases, yang memberikan batasan akses ke pengguna secara spesifik menggunakan GRANT dan REVOKE agar data tidak di manipulasi oleh orang yang tidak berkepentingan. RBAC membuat manajemen user jadi lebih efisien dsari pada ribet mengatur hak akses satu per satu untuk puluhan pengguna misalnya, jadi kita bisa memanfaatkan fitur role dengan lebih praktis, rapi dan sedikit risiko
Referensi
Ahmad Nugroho, S.Kom., M.Kom.(2026).Keamanan Basis Data (Akses pengguna). [Modul 8]