Sitemap
Dany

Dany

Database Security

9 min readJun 20, 2026
Press enter or click to view image in full size

Hi, Dany’s here today i wanna Discuss about Database Security.

1. Pengertian

a. Keamanan Basis Data

Keamanan basis data merupakan serangkaian tindakan yang digunakan untuk melindungi data dari berbagai ancaman, seperti akses tanpa izin, perubahan data secara ilegal, kehilangan data, dan penyalahgunaan hak akses.

Sistem basis data dapat memiliki banyak pengguna. Setiap pengguna biasanya mempunyai tugas dan hak akses yang berbeda. Oleh karena itu, pemberian hak akses harus dilakukan secara tepat agar setiap pengguna hanya dapat mengakses data yang memang diperlukan.

Beberapa hak akses yang tersedia dalam SQL antara lain:

  • SELECT, untuk melihat data.
  • INSERT, untuk menambahkan data.
  • UPDATE, untuk mengubah data.
  • DELETE, untuk menghapus data.
  • REFERENCES, untuk mengatur referensi antartabel.
  • TRIGGER, untuk menjalankan trigger.
  • EXECUTE, untuk menjalankan stored procedure.
  • USAGE, untuk memberikan akses dasar tanpa hak khusus.
  • ALL PRIVILEGES, untuk memberikan seluruh hak akses.

b. Ancaman terhadap Basis Data

Ancaman pada basis data dapat berasal dari pengguna internal maupun pihak luar. Beberapa ancaman yang mungkin terjadi adalah:

  • Pengguna mengakses tabel yang bukan menjadi kewenangannya.
  • Pengguna mengubah atau menghapus data penting.
  • Informasi rahasia dapat dilihat oleh pengguna yang tidak memiliki izin.
  • Terjadi penyalahgunaan akun pengguna.
  • Terjadi kehilangan data akibat kesalahan atau serangan.

Pemberian hak akses sesuai kebutuhan dapat mengurangi risiko penyalahgunaan basis data.

c. GRANT

Perintah GRANT digunakan untuk memberikan hak akses kepada pengguna atau role tertentu.

Contoh pemberian hak akses:

GRANT SELECT ON nama_database.nama_tabel TO 'nama_user'@'localhost';

d. REVOKE

Perintah REVOKE digunakan untuk mencabut hak akses yang sebelumnya telah diberikan kepada pengguna.

Contoh:

REVOKE SELECT ON nama_database.nama_tabel FROM 'nama_user'@'localhost';

e. Role-Based Access Control

Role-Based Access Control atau RBAC adalah metode pengaturan akses berdasarkan peran atau role. Hak akses diberikan kepada role, kemudian role tersebut diberikan kepada satu atau lebih pengguna.

Dengan menggunakan role, administrator tidak perlu memberikan hak akses kepada setiap pengguna secara satu per satu.

2. Praktikum

a. Login ke MySQL

Press enter or click to view image in full size
Proses login ke MySQL menggunakan Command Prompt.

Setelah berhasil login, terminal akan menampilkan prompt MySQL atau MariaDB.

b. Membuat Basis Data

Basis data yang digunakan pada praktikum ini bernama db_kampus.

CREATE DATABASE db_kampus;
USE db_kampus;

Perintah CREATE DATABASE digunakan untuk membuat basis data baru, sedangkan perintah USE digunakan untuk memilih basis data yang akan digunakan.

c. Membuat Tabel Mahasiswa

Tabel mahasiswa digunakan untuk menyimpan data mahasiswa.

CREATE TABLE mahasiswa (
nim CHAR(10) PRIMARY KEY,
nama VARCHAR(50),
jurusan VARCHAR(30)
);

d. Membuat Tabel Mata Kuliah

Tabel matakuliah digunakan untuk menyimpan informasi mata kuliah.

CREATE TABLE matakuliah (
kode_mk CHAR(6) PRIMARY KEY,
nama_mk VARCHAR(50),
sks INT
);

e. Membuat Tabel Dosen

Tabel dosen digunakan untuk menyimpan data dosen.

CREATE TABLE dosen (
nip CHAR(10) PRIMARY KEY,
nama VARCHAR(50),
bidang VARCHAR(30)
);

3. User Management

a. Membuat User Admin

Pengguna user_admin dibuat sebagai pengguna yang memperoleh akses penuh terhadap basis data.

Press enter or click to view image in full size
CREATE USER 'user_admin'@'localhost' IDENTIFIED BY 'admin123';

Password yang digunakan oleh user_admin adalah admin123.

b. Membuat User Mahasiswa

Pengguna user_mhs digunakan untuk melakukan pengujian hak akses terbatas.

Press enter or click to view image in full size
CREATE USER 'user_mhs'@'localhost' IDENTIFIED BY 'mhs123';

Password yang digunakan oleh user_mhs adalah mhs123.

c. Membuat User Dosen

Pengguna user_dosen digunakan untuk menerapkan pengaturan akses berbasis role.

Press enter or click to view image in full size
CREATE USER 'user_dosen'@'localhost' IDENTIFIED BY 'dosen123';

Password yang digunakan oleh user_dosen adalah dosen123.

4. Penerapan GRANT dan REVOKE

a. Memberikan Akses Penuh kepada User Admin

Pengguna user_admin diberikan seluruh hak akses pada basis data db_kampus.

Press enter or click to view image in full size
GRANT ALL PRIVILEGES ON db_kampus.* TO 'user_admin'@'localhost';

Tanda * setelah nama basis data menunjukkan bahwa hak akses diberikan terhadap seluruh tabel yang berada di dalam db_kampus.

Dengan hak akses tersebut, user_admin dapat:

  • Membuat tabel.
  • Menghapus tabel.
  • Melihat data.
  • Menambahkan data.
  • Mengubah data.
  • Menghapus data.

b. Memberikan Akses Terbatas kepada User Mahasiswa

Pengguna user_mhs hanya diberikan hak akses SELECT pada tabel matakuliah.

Press enter or click to view image in full size
GRANT SELECT ON db_kampus.matakuliah TO 'user_mhs'@'localhost';

Dengan hak akses tersebut, user_mhs hanya dapat melihat data pada tabel matakuliah.

Pengguna tidak diperbolehkan melihat tabel lain, menambahkan data, mengubah data, maupun menghapus data.

c. Mencabut Akses User Mahasiswa

Hak akses SELECT pada tabel matakuliah kemudian dicabut menggunakan perintah REVOKE.

Press enter or click to view image in full size
REVOKE SELECT ON db_kampus.matakuliah FROM 'user_mhs'@'localhost';

Setelah perintah tersebut dijalankan, user_mhs tidak dapat lagi melihat data pada tabel matakuliah.

5. Penerapan Role-Based Access Control

a. Membuat Role Dosen

Role baru bernama role_dosen dibuat menggunakan perintah berikut:

CREATE ROLE 'role_dosen';

Role tersebut digunakan untuk menampung kumpulan hak akses yang dibutuhkan oleh pengguna dosen.

b. Memberikan Hak Akses kepada Role Dosen

Role dosen diberikan hak akses SELECT dan INSERT pada tabel mahasiswa.

Press enter or click to view image in full size
GRANT SELECT, INSERT ON db_kampus.mahasiswa TO 'role_dosen';

Dengan hak akses tersebut, pengguna yang memperoleh role_dosen dapat melihat dan menambahkan data mahasiswa.

c. Memberikan Role kepada User Dosen

Role yang telah dibuat diberikan kepada user_dosen.

GRANT 'role_dosen' TO 'user_dosen'@'localhost';

d. Menetapkan Default Role

Role dosen ditetapkan sebagai role default untuk pengguna user_dosen.

Press enter or click to view image in full size
SET DEFAULT ROLE role_dosen FOR 'user_dosen'@'localhost';

6. Pengujian Hak Akses

Pengujian dilakukan dengan login menggunakan pengguna yang berbeda. Tujuannya adalah untuk memastikan setiap pengguna hanya dapat menjalankan perintah sesuai hak akses yang diberikan.

a. Pengujian User Mahasiswa

Login menggunakan user_mhs.

mysql -u user_mhs -p

Masukkan password:

Press enter or click to view image in full size
mhs123

a. Uji Akses Positif Sebelum Dicabut

Get Dany’s stories in your inbox

Join Medium for free to get updates from this writer.

Sebelum hak akses dicabut, jalankan perintah:

SELECT * FROM db_kampus.matakuliah;

Perintah berhasil dijalankan karena user_mhs memiliki hak akses SELECT pada tabel matakuliah.

b. Uji Setelah REVOKE

Setelah hak akses dicabut, jalankan kembali:

Press enter or click to view image in full size
SELECT * FROM db_kampus.matakuliah;

Perintah ditolak dan muncul pesan access denied.

c. Uji Akses Tabel Mahasiswa

Press enter or click to view image in full size
SELECT * FROM db_kampus.mahasiswa;

Perintah ditolak karena user_mhs tidak memiliki akses terhadap tabel mahasiswa.

d. Uji Menambahkan Mata Kuliah

Press enter or click to view image in full size
INSERT INTO db_kampus.matakuliah VALUES ('IF2020', 'Jaringan', 3);

Perintah ditolak karena user_mhs tidak memiliki hak akses INSERT.

7. Pengujian User Dosen

Login menggunakan user_dosen.

mysql -u user_dosen -p

Masukkan password:

Press enter or click to view image in full size
dosen123

a. Mengakses Tabel Mahasiswa

SELECT * FROM db_kampus.mahasiswa;

Berhasil karena role_dosen mempunyai hak akses SELECT pada tabel mahasiswa.

b. Menambahkan Data Mahasiswa

Press enter or click to view image in full size
INSERT INTO db_kampus.mahasiswa VALUES ('1234567890', 'Andi', 'Informatika');

Berhasil karena role_dosen mempunyai hak akses INSERT pada tabel mahasiswa.

Untuk melihat data yang telah dimasukkan, jalankan kembali:

SELECT * FROM db_kampus.mahasiswa;

c. Mengakses Tabel Dosen

Press enter or click to view image in full size
SELECT * FROM db_kampus.dosen;

Ditolak karena role_dosen tidak diberikan hak akses terhadap tabel dosen.

8. Pengujian User Admin

Login menggunakan user_admin.

mysql -u user_admin -p

Masukkan password:

Press enter or click to view image in full size
admin123

Karena user_admin mempunyai ALL PRIVILEGES, pengguna tersebut seharusnya dapat membuat dan menghapus tabel.

a. Membuat Tabel Sementara

create table temp_tabel(
nah int primary key,
name varchar(36) not null,
alamat varchar(64) not null);

berhasil.

b. Menghapus Tabel Sementara

DROP TABLE IF EXISTS temp_tabel;

berhasil.

9. Tugas

Soal

  1. Membuat role baru bernama role_keuangan yang hanya dapat melakukan SELECT dan UPDATE pada tabel tagihan.
  2. Membuat pengguna baru bernama user_keu, kemudian memberikan role tersebut kepada pengguna.
  3. Memastikan pengguna hanya dapat melihat dan mengubah data, tetapi tidak dapat melakukan INSERT atau DELETE.

a. Membuat Tabel Tagihan

Karena tabel tagihan belum tersedia pada basis data db_kampus, tabel tersebut perlu dibuat terlebih dahulu menggunakan pengguna root atau user_admin.

USE db_kampus;

CREATE TABLE tagihan (
id_tagihan INT PRIMARY KEY,
nim CHAR(10),
jumlah_tagihan DECIMAL(12,2),
status_tagihan VARCHAR(20)
);

b. Menambahkan Data Dummy

Data dummy ditambahkan agar hak akses SELECT dan UPDATE dapat diuji.

INSERT INTO tagihan VALUES
(1, '1234567890', 1500000.00, 'Belum Lunas'),
(2, '1234567891', 2000000.00, 'Belum Lunas');

Untuk melihat data:

SELECT * FROM tagihan;

c. Membuat Role Keuangan

Role baru dibuat dengan nama role_keuangan.

CREATE ROLE 'role_keuangan';

d. Memberikan Hak SELECT dan UPDATE

Role role_keuangan hanya diberikan hak untuk melihat dan mengubah data pada tabel tagihan.

Press enter or click to view image in full size
GRANT SELECT, UPDATE ON db_kampus.tagihan TO 'role_keuangan';

Role tersebut tidak diberikan hak INSERT dan DELETE.

e. Membuat User Keuangan

Pengguna baru dibuat dengan nama user_keu.

Press enter or click to view image in full size
CREATE USER 'user_keu'@'localhost' IDENTIFIED BY 'keu123';

f. Memberikan Role kepada User Keuangan

Role role_keuangan diberikan kepada user_keu.

GRANT 'role_keuangan' TO 'user_keu'@'localhost';

Role kemudian ditetapkan sebagai role default.

Press enter or click to view image in full size
SET DEFAULT ROLE role_keuangan FOR 'user_keu'@'localhost';

g. Pengujian User Keuangan

Login menggunakan akun user_keu.

mysql -u user_keu -p

Masukkan password:

Press enter or click to view image in full size
keu123

h. Pengujian SELECT

Jalankan perintah berikut:

SELECT * FROM db_kampus.tagihan;

Berhasil karena role_keuangan memiliki hak akses SELECT.

i. Pengujian UPDATE

Ubah status tagihan dengan ID 1 menjadi Lunas.

UPDATE db_kampus.tagihan
SET status_tagihan = 'Lunas'
WHERE id_tagihan = 1;

Berhasil karena role_keuangan memiliki hak akses UPDATE.

Periksa perubahan data:

SELECT * FROM db_kampus.tagihan;

j. Pengujian INSERT

Coba tambahkan data baru menggunakan perintah berikut:

Press enter or click to view image in full size
INSERT INTO db_kampus.tagihan
VALUES (3, '1234567892', 1750000.00, 'Belum Lunas');

Ditolak atau muncul pesan access denied karena role_keuangan tidak mempunyai hak akses INSERT.

k. Pengujian DELETE

Coba menghapus data menggunakan perintah berikut:

Press enter or click to view image in full size
DELETE FROM db_kampus.tagihan
WHERE id_tagihan = 2;

Ditolak atau muncul pesan access denied karena role_keuangan tidak mempunyai hak akses DELETE.

That’s all, Thanks for reading my post, see ya on the last database report.

Reference:

  • MODUL 8 — KEAMANAN BASIS DATA by Ahmad Nugroho, S.Kom., M.Eng.

GitHub Link:

https://github.com/dxnyai/Praktikum-Basis-Data/blob/main/Tugas/TugasModul8_DBMS_2505060062.sql

--

--