MATERI 3 - MANAJEMEN USER, ROLE, DAN PRIVILEGE

Saya, Marinda Cahya P, dari Kelas 2B dengan nomor absen 16, menulis materi ini sebagai rangkuman dari Praktikum Instalasi dan Konfigurasi Server Database yang dilaksanakan pada tanggal 26 Februari 2025. Topik yang dibahas dalam praktikum ini adalah Manajemen user, role, privilege. Rangkuman ini disusun sebagai salah satu syarat untuk memenuhi tugas praktikum Mata Kuliah Sistem Manajemen Basis DataJika terdapat kesalahan dalam penulisan atau gambar yang kurang jelas, saya mohon maaf.


MANAJEMEN USER, ROLE, PRIVILAGE





Latar Belakang

Dalam sistem basis data, pengelolaan pengguna dan hak akses merupakan aspek krusial untuk memastikan keamanan, efisiensi, dan keteraturan dalam pengelolaan data. MySQL menyediakan fitur manajemen user, role, dan privilege yang memungkinkan administrator database (DBA) mengatur siapa yang dapat mengakses, mengubah, atau menghapus data dalam sistem.

Mengapa manajemen user penting?

• Mencegah akses tidak sah ke database.

• Memastikan setiap pengguna memiliki hak akses yang sesuai dengan tugasnya.

• Memudahkan pengelolaan hak akses dengan sistem role.

Memungkinkan monitoring aktivitas pengguna untuk keamanan dan audit.

Permasalahan yang diangkat

Adapun Permasalahan yang diangkat dalam tugas ini yakni :
  1. Bagaimana cara membuat dan menghapus user di MySQL?
  2. Bagaimana cara memberikan hak akses (privilege) kepada user?
  3. Bagaimana cara membuat role untuk menyederhanakan pengelolaan hak akses?
  4. Bagaimana cara memonitor aktivitas pengguna dalam database?

Skenario aktivitas

Dalam tugas ini, dilakukan beberapa tahapan:
  1. Pembuatan dan penghapusan user dalam MySQL.
  2. Pengelolaan hak akses (privilege) dengan GRANT dan REVOKE.
  3. Penggunaan role untuk manajemen hak akses yang lebih efisien.
  4. Monitoring aktivitas pengguna melalui general log.

Pembahasan (Latihan Soal)

1. Manajemen Akun Pengguna

Manajemen pengguna melibatkan proses pembuatan, penghapusan, dan otentikasi user dalam MySQL.
  • Pembuatan User
    • Untuk membuat user baru, gunakan perintah berikut:
CREATE USER 'abellya'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'marinda'@'localhost' IDENTIFIED BY '12345';
CREATE USER 'aurell'@'localhost' IDENTIFIED BY '1234';
📌 Hasil: Tiga user berhasil dibuat.

Untuk melihat daftar user yang ada:
SELECT user, host FROM mysql.user;
📌 Hasil: Daftar user yang telah dibuat.

  • Penghapusan User
Untuk menghapus user yang sudah tidak digunakan:
DROP USER 'aurell'@'localhost';
📌 Hasil: User 'aurell' berhasil dihapus.

2. Manajemen Hak Akses atau Privilege

  • Membuat Role
    • Role memungkinkan pengelolaan hak akses dengan lebih mudah. Sebagai contoh, kita membuat dua role:
CREATE ROLE 'role_abel_select_insert';
SELECT * FROM mysql.roles_mapping;
📌 Hasil: Role berhasil dibuat.
  • Memberikan Privilage select insert Ke Role diatas
Memberikan hak akses 

GRANT SELECT, INSERT ON data_base26.* TO 'role_abel_select_insert';

SHOW GRANTS FOR 'role_abel_select_insert';

📌 Hasil: Hak akses berhasil diberikan.

  • Buat role dengan “role_nama_anda_create_drop” → role_andi_create_drop

CREATE ROLE 'role_marinda_create_drop';

SELECT USER FROM mysql.user WHERE USER = 'role_marinda_create_drop';

1.     


  • Berikan Privilege create, drop kedalam role diatas

GRANT CREATE,DROP ON data_base26.* TO 'role_marinda_create_drop';

SHOW GRANTS FOR 'role_marinda_create_drop';



  • Memberikan 2 User Kedalam Masing- masing roel diatas

CREATE USER 'aurel1'@'localhost'IDENTIFIED BY'1234';

CREATE USER 'aurel2'@'localhost'IDENTIFIED BY'1234';

CREATE USER 'aurel3'@'localhost'IDENTIFIED BY'1234';

CREATE USER 'aurel4'@'localhost'IDENTIFIED BY'1234';

GRANT 'role_abel_select_insert' TO 'aurel1'@'localhost';

GRANT 'role_abel_select_insert' TO 'aurel2'@'localhost';

GRANT 'role_marinda_create_drop' TO 'aurel3'@'localhost';

GRANT 'role_marinda_create_drop' TO 'aurel4'@'localhost';


SHOW GRANTS FOR 'aurel1'@'localhost';

SHOW GRANTS FOR 'aurel2'@'localhost';

SHOW GRANTS FOR 'aurel3'@'localhost';

SHOW GRANTS FOR 'aurel4'@'localhost';



3. Pengujian Sebelum Dan sesudah user diberikan role

  • Sebelum

SHOW GRANTS FOR 'aurel2'@'localhost';

USE basis_data26;

SELECT * FROM produk;

INSERT INTO produk(nama,harga) VALUES ('beras', 20000);


  • Sesudah

CREATE ROLE 'role_select_insert';

GRANT SELECT, INSERT ON basis_data26.* TO 'role_select_insert';

GRANT 'role_select_insert' TO 'aurel2'@'localhost';

FLUSH PRIVILEGES;



USE basis_data26;

SELECT * FROM produk;

INSERT INTO produk(nama,harga) VALUES ('minyak', 20000);


4. Lepas role dari user diatas. Sehingga user menjadi tidak memiliki role

  • Sebelum
SHOW GRANTS FOR 'aurel2'@'localhost';
  • Sesudah
REVOKE 'role_abel_select_insert'FROM'aurel2'@'localhost'

Penjelasan :
Perintah ini digunakan untuk mencabut (menghapus) role 'role_abel_select_insert' dari user 'aurel2'@'localhost'.
  1. REVOKE → Perintah untuk mencabut hak akses atau role dari user.
  2. 'role_abel_select_insert' → Role yang diberikan sebelumnya kepada user 'aurel2'.
  3. FROM 'aurel2'@'localhost' → Menargetkan user aurel2 yang hanya bisa login dari localhost.

5. Lakukan konfigurasi untuk proses monitoring proses seperti contoh diatas, dan lakukan

beberapa kali proses query. Kemudian lihat di log nya dan tampilkan hasilnya.

SET GLOBAL general_log = 1;

SET GLOBAL log_output = 'table';

SELECT * FROM mysql.general_log;



Penjelasan:

1.     SET GLOBAL general_log = 1;

-        Fungsi: Mengaktifkan general log, yang digunakan untuk mencatat semua perintah SQL yang dijalankan di MySQL.

-        Dampak: Setelah ini aktif, setiap query yang dijalankan oleh user akan dicatat dalam log MySQL.

2.     SET GLOBAL log_output = 'table';

-        Fungsi: Mengatur output log agar disimpan dalam bentuk tabel (mysql.general_log).

3.     SELECT * FROM mysql.general_log;

-        Fungsi: Menampilkan semua query yang telah dieksekusi sejak general log diaktifkan.

-         Output: Akan menampilkan data seperti:

event_time → Waktu eksekusi query.

user_host → User yang menjalankan query.

command_type → Jenis query (SELECT, INSERT, dll.).

argument → Isi query yang dijalankan.


Kesimpulan

  • Penggunaan role mempermudah manajemen hak akses dibandingkan memberikan izin secara manual ke masing-masing user.
  • Hak akses pengguna dapat diuji sebelum dan sesudah role diberikan untuk memastikan pengaturan yang benar.
  • Monitoring aktivitas pengguna sangat penting untuk memastikan keamanan dan mencegah akses yang tidak sah.
  • General log membantu DBA dalam memantau semua aktivitas yang dilakukan di dalam database.
  • Dengan sistem role dan logging yang baik, pengelolaan database menjadi lebih efisien, aman, dan terstruktur. 

Referensi



Komentar

Postingan populer dari blog ini

MATERI 5 - OPTIMASI DATABASE , DAN PARTISI TABEL

MATERI 2 - INSTALASI DAN KONFIGURASI SERVER DATABASE

MATERI 6 - BOTTLENECK PADA MYSQL