Tutorial Belajar MySQL Part 32: Jenis-jenis Hak Akses (Privileges) dalam MySQL

Posted on

Seandainya di panduan sebelumnya kita telah membahas cara membuat user dalam MySQL, Pada panduan kali ini kita akan membahas jenis-jenis hak akses yang ada pada MySQL. Hak akses ini nantinya digunakan bagi membatasi hak dari masing-masing user pada mengunakan MySQL.


Jenis Hak Akses Menurut Cakupan Akses Level

Seperti yang telah kita pelajari di panduan Cara Membuat Hak Akses (Privileges) User MySQL, bahwa MySQL menyediakan bermacam-macam tingkatan level hak akses. Setiap user dapat dibatasi bagi dapat mengakses bagus itu sebuah database tertentu saja, tabel tertentu, atau bahkan hanya kolom tertentu.

Seandainya didasarkan di pengelompokkan ini, kita dapat membagi hak akses MySQL menjadi 4 level tingkatan, yaitu:

1. Hak Akses Global (*.*)

Hak akses ini berarti user dapat mempunyai hak akses bagi seluruh database yang terdapat di pada MySQL. Contoh penulisan query GRANT bagi level ini yaitu:

Perhatikan cara penulisan nama_database.nama_tabel, dimana kita menulisnya dengan *.*, sehingga user tersebut dapat mengakses seluruh tabel di seluruh database.

2. Hak Akses Level Database (nama_database.*)

Hak akses ini berarti user mempunyai hak akses penuh bagi sebuah database. Contoh penulisan query GRANT bagi level database ini yaitu:

Bagi penulisan nama_database.nama_tabel, kita membatasi nama database, namun memberikan hak akses bagi seluruh tabel, penulisannya yaitu nama_database.*

3. Hak Akses Level Tabel (nama_database.nama_tabel)

Hak akses ini berarti user mempunyai hak akses bagi sebuah tabel yang berada di sebuah database. Contoh penulisan query GRANT bagi level ini yaitu:

Hak akses yang dimiliki user hanya terbatas di level sebuah tabel saja.

4. Hak Akses Level Kolom (nama_kolom)

Hak akses ini yaitu hak akses sangat kecil yang dapat diberikan kepada sebuah user. Dengan hak akses level kolom, user hanya mempunyai hak akses bagi beberapa kolom di sebuah tabel. Contoh penulisan query GRANT bagi level kolom ini yaitu:

Level sangat ahir ini kita membatasi hak akses user hanya bagi kolom tertentu saja. Penulisan kolom yang diperbolehkan diletakkan di pada tanda kurung.


Tipe-Tipe Hak Akses pada MySQL

Bagi setiap level diatas, kita dapat memakai bermacam-macam tipe hak akses yang ingin diberikan, apakah itu hanya bagi melihat saja (query SELECT), menambahkan data (query INSERT), mengupdate data (query UPDATE), bahkan menghapus data (query DELETE).

Di tabel dibawah ini saya melampirkan seluruh tipe hak akses yang dapat diberikan/dibatasi bagi user. Tabel tersebut diambil seketika dari manual resmi MySQL. Kebanyakan dari hak akses tersebut akan jarang digunakan dan belum kita pelajari, namun tabel dibawah dapat dijadikan referensi terkait hak akses (privileges).

Hak Akses Keterangan
ALL [PRIVILEGES] Memberikan seluruh hak akses, kecuali GRANT OPTION
ALTER Hak akses bagi merubah tabel (ALTER TABLE)
ALTER ROUTINE Hak akses bagi merubah stored routines
CREATE Hak akses bagi membangun tabel dan database
CREATE ROUTINE Hak akses bagi membangun dan menghapus stored routine
CREATE TABLESPACE Hak akses bagi membangun, mengubah dan menghapus tablespaces dan log file
CREATE TEMPORARYTABLES Hak akses bagi membangun tabel sementara CREATE TEMPORARY TABLE
CREATE USER Hak akses bagi membangun, menghapus, dan mengubah user (CREATE USER, DROP USER, RENAME USER, dan REVOKE ALL PRIVILEGES)
CREATE VIEW Hak akses bagi membangun dan mengubah views
DELETE Hak akses bagi menghapus data (DELETE)
DROP Hak akses bagi menghapus database, tabel dan view
EVENT Hak akses bagi membangun event
EXECUTE Hak akses bagi menjalankan stored routines
FILE Hak akses bagi membangun server membaca maupun membangun file
GRANT OPTION Hak akses bagi memberikan hak akses kepada user lainnya.
INDEX Hak akses bagi membangun dan menghapus index
INSERT Hak akses bagi menambahkan data (query INSERT)
LOCK TABLES Hak akses bagi mengunci tabel (LOCK TABLES)
PROCESS Hak akses bagi melihat seluruh proses (SHOW PROCESSLIST)
PROXY Hak akses bagi proses proxy
REFERENCES Belum diimplementasikan
RELOAD Hak akses bagi operasi FLUSH
REPLICATION CLIENT Hak akses bagi mengubah urutan master dan slave server
REPLICATION SLAVE Hak akses bagi server replikasi bagi membaca log event biner dari server master
SELECT Hak akses bagi melihat data (query SELECT)
SHOW DATABASES Hak akses bagi melihat seluruh database (SHOW DATABASES)
SHOW VIEW Hak
akses bagi melihat perancangan view (SHOW CREATE VIEW)
SHUTDOWN Hak akses bagi mysqladmin shutdown
SUPER Hak akses bagi guna administrasi server, seperti CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, dan command debug mysqladmin
TRIGGER Hak akses bagi operasi trigger
UPDATE Hak akses bagi memperbaharui data (UPDATE)
USAGE Sama artinya dengan “tanpa hak akses”


Pengertian Hak Akses GRANT ALL

Di panduan Cara Membangun Hak Akses (Privileges) User MySQL dengan query GRANT, kita telah melihat penulisan hak akses GRANT ALL. Namun sesungguhnya apa saja hak akses yang dapat dilakukan dengan GRANT ALL? Dan apa saja hak akses lainnya?

GRANT ALL yaitu cara penyingkatan memberikan hampir seluruh hak akses kepada sebuah user tertentu. Hak akses ini melingkupi seluruh query basic:

ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, EXECUTE, FILE, INDEX, INSERT, LOCK TABLES, PROCESS, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SELECT, SHOW DATABASES, SHUTDOWN, SUPER, dan UPDATE.

Sebahagian besar hak akses diatas belum kita bahas, namun ini dapat menjadi referensi kalau kamu memberikan hak akses dengan GRANT ALL kepada sebuah user.


Bagi lebih memahami cara perancangan user dan hak aksesnya, saya akan memberikan beberapa contoh, dan kalau kamu telah mempelajari panduan sebelumnya, contoh disini akan gampang dimengerti.

1. Buatlah user ‘dosen_ilkom’ yang dapat melihat, merubah dan menambahkan data ke tabel mahasiswa_ilkom, namun tak dapat menghapus data yang terdapat. User tersebut hanya dapat diakses dari localhost.

Berikut yaitu query yang dibutuhkan:

2. Buatlah user ‘sensus_ilkom’ yang dapat melihat seluruh tabel di pada database mahasiswa_ilkom, namun hanya di kolom nim, nama, dan umur. User tersebut akan mengakses database dari IP 192.168.0.4 .

Berikut yaitu query yang dibutuhkan:

3. Buatlah user ’admin_kampus’ yang dapat mengedit, membangun, dan menghapus tabel pada database universitas, namun tak dapat mengerjakan manipulasi data di pada tabel tersebut. User ini dapat diakses dari komputer manapun.

Berikut yaitu query yang dibutuhkan:

Pada menyusun program yang memerlukan database MySQL, pembatasan hak akses seperti diatas memerlukan seni tersendiri. Permasalahan muncul kalau tiba-tiba user yang telah dibatasi ternyata memerlukan akses ke tabel lain. Kita sebaiknya telah memperkirakan level apa saja yang dapat diakses oleh user tertentu dan di tabel apa saja sebelum program direlease.

Seandainya kamu membangun program, biasanya pengguna tak akan diberikan akses seketika dengan MySQL Server, namun kita biasanya akan memandu pengguna lewat interface lainnya seperti halaman web (bagi situs online) atau form visual basic (bagi program desktop). Pada program web, kode PHPlah (atau lebih tepatnya: web server) yang mengakses MySQL, pengguna hanya dihadapkan di halaman form laman.

Bagi hal keamanan database, Seandainya kamu telah membatasi hak akses pengguna di level PHP, hal tersebut dapat dinamakan telah lumayan. Namun kalau terdapat kemungkinan pengguna mengakses MySQL Server secara seketika, kita sedapat mungkin telah mengantisipasinya dengan membangun user berlapis (dari kode PHP dan dari pada MySQL).


 

Pada panduan berikutnya, kita akan membahas cara melihat daftar user MySQL dan hak aksesnya dengan query SHOW GRANTS FOR.


Sumber https://www.duniailkom.com/