info-b

Tutorial Belajar MySQL Part 31: Cara Membuat Hak Akses (Privileges) User MySQL (GRANT)

Posted on

Sekiranya di Tutorial Cara Membuat dan Menghapus User MySQL, kita telah belajar cara membangun user, di panduan kali ini kita akan mempelajari cara untuk membuat dan memberikan hak akses kepada user tersebut dengan query GRANT.

Hak akses pada MySQL selain dibatasi dengan query apa saja yang dibolehkan, pun dapat dibatasi di level dimana query tersebut akan dijalankan, misalkan di level database, level tabel atau level kolom. Kita akan membahasnya secara komplit di panduan kali ini.

Secara sekilas, kita telah membahas mengenai pengertian hak akses (privileges) di artikel Tutorial Belajar MySQL: Mengenal Superuser root dan Pengertian Privileges MySQL.

Pada perancangan program yang membutuhkan database, setiap user yang akan mengakses database seharusnya mempunyai batasan masing-masing sesuai dengan fungsinya. Selaku contoh, di database universitas yang telah kita bikin, terdapat 2 buah tabel, yakni mahasiswa_ilkom dan mahasiswa_ekonomi.

Misalkan kita membangun user mahasiswa. User mahasiswa ini hanya diberikan hak akses bagi melihat-lihat data tabel mahasiswa_ilkom dan mahasiswa_ekonomi, namun tak dapat merubah apapun di pada tabel tersebut. Di pada MySQL, user mahasiswa ini hanya kita berikan hak akses SELECT.

Contoh lainnya, bagi kebutuhan administrasi, user ilkom_admin selaku administrator akan diberikan hak akses bagi dapat menginput data dan merubah data dari tabel mahasiswa_ilkom. Tetapi , user ilkom_admin tak dapat melihat dan merubah tabel mahasiswa_ekonomi, karena hak akses itu seharusnya diberikan kepada ekonomi_admin.

Dari contoh ini kita dapat melihat perlunya membatasi hak akses bagi masing-masing user: user mahasiswa, user ilkom_admin, dan user ekonomi_admin.

Saya akan menggunakan contoh database universitas yang telah dibangun di Tutorial Cara Membuat dan Menghapus User MySQL, kalau kamu ingin mengikuti contoh yang terdapat, silahkan bikin database tersebut terlebih dahulu.


Cara Memberikan Hak Akses Kepada User dengan query GRANT

Bagi memberikan hak akses kepada sebuah user, MySQL menyediakan query GRANT. Berikut format mendasar query GRANT:

  • hak_akses yaitu privileges yang akan berikan kepada user tersebut. Hak akses disini berisi query yang diperbolehkan, seperti: SELECT, INSERT, UPDATE, DELETE, atau query lainnya. Sekiranya kita ingin memberikan hak penuh bagi seluruh query mendasar tersebut, hak_akses ini dapat diisi dengan ALL.
  • nama_database yaitu nama database yang ingin diberikan hak akses. Sekiranya kita mengizinkan user tersebut dapat mengakses seluruh database yang terdapat, nama_database dapat ditulis dengan tanda bintang (*).
  • nama_tabel yaitu nama tabel yang ingin diberikan hak akses. Sekiranya kita mengizinkan user dapat menggunakan seluruh  tabel, nama_tabel dapat ditulis dengan tanda bintang (*).
  • nama_user yaitu nama dari user yang akan diberikan hak akses.
  • lokasi_user yaitu tempat tinggal IP dari user yang ingin diberikan hak akses.

Selaku contoh pemakaian query GRANT, misalkan kita ingin memberikan privileges kepada ilkom_admin bagi dapat melihat (mengerjakan query SELECT) di tabel mahasiswa_ilkom yang berada di database universitas, karenanya berikut query yang kita gunakan:

Query diatas terdiri dari 2 bagian, di bagian pertama-tama kita membangun user ilkom_admin yang mesti diakses dari komputer localhost (komputer yang sama dengan server MySQL berada), dan memberikan password ‘r4hasia’. Cara membangun user telah kita bahas di panduan sebelumnya, Cara Merancang dan Menghapus User MySQL (CREATE USER).

Berikutnya di bagian kedua, kita memberikan hak akses dengan query GRANT di bagi user ilkom_admin.

Perhatikan cara penulisan query GRANT tersebut, setelah keyword GRANT, diikuti dengan kata SELECT. SELECT disini yaitu hak akses yang ingin di berikan kepada user, saya memberikan hak SELECT karena user admin ketika ini hanya dapat mengerjakan petunjuk SELECT.

Setelah SELECT, diikuti dengan penulisan tabel yang diperbolehkan, yakni universitas.mahasiswa_ilkom (dibaca:tabel mahasiswa_ilkom di database universitas). Bagian terakhir yaitu user yang akan diberikan hak aksesnya, yakni ilkom_admin di localhost.

Bagi mencoba user ilkom_admin, keluarlah dari root, dan masuk selaku ilkom_admin:

Dari contoh query diatas, dapat dilihat bahwa di ketika ilkom_admin menjalankan petunjuk SHOW TABLES, ia hanya dapat melihat satu tabel, yakni tabel mahasiswa_ilkom. Padahal pada database tersebut kita pun telah membangun tabel mahasiswa_ekonomi, namun karena hak akses yang diberikan, ilkom_admin hanya dapat melihat tabel yang diperbolehkan.

Setelah menampilkan isi tabel mahasiswa_ilkom,  user ilkom_admin mencoba menghapus tabel mahasiswa_ilkom. Tetapi karena kita membatasi hak aksesnya, ilkom_admin tak dapat menjalankan query DELETE dan DROP, dan akan seketika ditolak oleh MySQL.


Cara Memberikan Hak Akses Bagi Seluruh Tabel

Selaku contoh kedua, kali ini kita akan membangun user mahasiswa yang diberikan hak akses bagi dapat melihat seluruh tabel yang terdapat di database universitas, berikut querynya:

Penyusunan user mahasiswa ini hampir sama dengan petunjuk ketika membangun user ilkom_admin. Kecuali kali ini bagi penulisan tabel kita menggunakan format universitas.* yang berarti dapat mengakses seluruh tabel di database universitas.

Berikutnya, kita akan mencoba menggunakan user mahasiswa bagi melihat database universitas:

Dari hasil query diatas, terlihat bahwa user mahasiswa dapat melihat terdapat 2 tabel pada database universitas. Dan kalau kita membangun sebuah tabel baru pada database universitas, user mahasiswa pun akan dapat melihatnya.


Cara Memberikan Seluruh Hak Akses (query GRANT ALL)

Dari kedua contoh user sebelumnya, yakni user ilkom_admin dan mahasiswa, kita hanya menggunakan hak akses SELECT. Kali ini kita akan memberikan hak akses penuh kepada user ekonomi_admin, dengan query GRANT ALL. Berikut querynya:

Dengan memberikan hak akses GRANT ALL, karenanya user ekonomi_admin dapat menggunakan seluruh query mendasar di tabel mahasiswa_ekonomi, seperti SELECT, UPDATE, bahkan DELETE. Selaku latihan, silahkan mencoba masuk selaku user ekonomi_admin dan lakukan petunjuk seperti UPDATE, DELETE, dan DROP.


Cara Memberikan Hak Akses MySQL Di Level Kolom

Bagi kebutuhan yang lebih spesifik, hak akses dapat pun dibatasi hanya bagi kolom tertentu. Hal ini dapat didasarkan bahwa terdapat sebuah kolom yang dirasakan rahasia, dan tak boleh dipahami bersama user tersebut.

Misalkan kita membangun user tamu_ilkom yang hanya dapat melihat nama dan umur mahasiswa di tabel mahasiswa_ilkom, dan merahasiakan kolom lainnya seperti tempat tinggal dan IPK, karenanya berikut querynya:

Perhatikan cara penulisan kolom yang diberikan hak aksesnya, setelah hak akses (pada contoh yaitu SELECT), penulisan nama kolom mesti berada pada tanda kurung. Dapat dilihat bahwa kita memberikan hak akses hanya di kolom nama dan umur bagi tabel mahasiswa_ilkom.

Bagi mengujinya, masuklah selaku user tamu_ilkom:

Di ketika user tamu_ilkom mencoba menampilkan seluruh kolom dengan query SELECT * FROM mahasiswa_ilkom, MySQL akan mengeluarkan error karena user tamu_ilkom hanya mempunyai hak akses bagi kolom nama dan umur saja, dimana di ketika menggunakan petunjuk SELECT nama,umur FROM mahasiswa_ilkom, MySQL menampilkannya dengan bagus.


 

Dari panduan Cara Membuat Hak Akses (Privileges) User MySQL dengan query GRANT ini, kita telah mempelajari cara memberikan hak akses bagi user. Hak akses itu sendiri sebetulnya dapat dibatasi di 4 tingkatan level, yakni level global, level database, level tabel, dan level kolom. Di panduan diatas, kita telah mencoba level database, tabel dan kolom, namun bagi lebih pada, kita akan membahasnya di panduan MySQL berikutnya: Membahas Jenis-jenis Hak Akses dalam MySQL.


Sumber https://www.duniailkom.com/