Belajar MySQL Part 27 : Membuat Hak Akses (Privileges) User MySQL (GRANT)
Jika pada Tutorial Cara Membuat dan Menghapus User MySQL, kita telah belajar cara membuat user, pada tutorial kali ini kita akan mempelajari cara untuk membuat dan memberikan hak akses kepada user tersebut dengan query GRANT.
Hak akses dalam MySQL selain dibatasi dengan query apa saja yang dibolehkan, juga dapat dibatasi pada level dimana query tersebut akan dijalankan, misalkan pada level database, level tabel atau level kolom. Kita akan membahasnya secara lengkap pada tutorial kali ini.
Dalam perancangan aplikasi yang membutuhkan database, setiap user yang akan mengakses database seharusnya memiliki batasan masing-masing sesuai dengan fungsinya. Sebagai contoh, pada database universitas yang telah kita buat, terdapat 2 buah tabel, yakni mahasiswa_ilkom dan mahasiswa_ekonomi.
Misalkan kita membuat user mahasiswa. User mahasiswa ini hanya diberikan hak akses untuk melihat-lihat data tabel mahasiswa_ilkom dan mahasiswa_ekonomi, namun tidak bisa merubah apapun di dalam tabel tersebut. Di dalam MySQL, user mahasiswa ini hanya kita berikan hak akses SELECT.
Contoh lainnya, untuk keperluan administrasi, user ilkom_admin sebagai administrator akan diberikan hak akses untuk dapat menginput data dan merubah data dari tabel mahasiswa_ilkom. Tetapi , user ilkom_admin tidak bisa 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 untuk masing-masing user: user mahasiswa, user ilkom_admin, dan user ekonomi_admin.
Cara Memberikan Hak Akses Kepada User dengan query GRANT
Untuk memberikan hak akses kepada sebuah user, MySQL menyediakan query GRANT. Berikut format dasar query GRANT:
Sebagai contoh penggunaan query GRANT, misalkan kita ingin memberikan privileges kepada admin untuk dapat melihat (melakukan query SELECT) pada tabel mahasiswa yang berada pada database universitas, maka berikut query yang kita gunakan:
Query diatas terdiri dari 2 bagian, pada bagian pertama kita membuat user admin yang harus diakses dari komputer localhost (komputer yang sama dengan server MySQL berada), dan memberikan password ‘admin’. Cara membuat user telah kita bahas pada tutorial sebelumnya, Cara Membuat dan Menghapus User MySQL (CREATE USER).
Selanjutnya pada bagian kedua, kita memberikan hak akses dengan query GRANT pada untuk user ilkom_admin.
Perhatikan cara penulisan query GRANT tersebut, setelah keyword GRANT, diikuti dengan kata SELECT. SELECT disini adalah hak akses yang ingin di berikan kepada user, saya memberikan hak SELECT karena user admin saat ini hanya dapat melakukan perintah SELECT.
Setelah SELECT, diikuti dengan penulisan tabel yang diperbolehkan, yakni universitas.mahasiswa (dibaca:tabel mahasiswa pada database universitas). Bagian terakhir adalah user yang akan diberikan hak aksesnya, yakni admin pada localhost.
Untuk mencoba user admin, keluarlah dari root, dan masuk sebagai admin:
Dari tutorial Cara Membuat Hak Akses (Privileges) User MySQL dengan query GRANT ini, kita telah mempelajari cara memberikan hak akses untuk user. Hak akses itu sendiri sebenarnya dapat dibatasi pada 4 tingkatan level, yakni level global, level database, level tabel, dan level kolom. Pada tutorial diatas, kita telah mencoba level database, tabel dan kolom, namun untuk lebih dalam, kita akan membahasnya pada tutorial MySQL selanjutnya: Membahas Jenis-jenis Hak Akses dalam MySQL.
Hak akses dalam MySQL selain dibatasi dengan query apa saja yang dibolehkan, juga dapat dibatasi pada level dimana query tersebut akan dijalankan, misalkan pada level database, level tabel atau level kolom. Kita akan membahasnya secara lengkap pada tutorial kali ini.
Secara sekilas, kita telah membahas tentang pengertian hak akses (privileges) pada artikel Mengenal Superuser root dan Pengertian Privileges MySQL.
Dalam perancangan aplikasi yang membutuhkan database, setiap user yang akan mengakses database seharusnya memiliki batasan masing-masing sesuai dengan fungsinya. Sebagai contoh, pada database universitas yang telah kita buat, terdapat 2 buah tabel, yakni mahasiswa_ilkom dan mahasiswa_ekonomi.
Misalkan kita membuat user mahasiswa. User mahasiswa ini hanya diberikan hak akses untuk melihat-lihat data tabel mahasiswa_ilkom dan mahasiswa_ekonomi, namun tidak bisa merubah apapun di dalam tabel tersebut. Di dalam MySQL, user mahasiswa ini hanya kita berikan hak akses SELECT.
Contoh lainnya, untuk keperluan administrasi, user ilkom_admin sebagai administrator akan diberikan hak akses untuk dapat menginput data dan merubah data dari tabel mahasiswa_ilkom. Tetapi , user ilkom_admin tidak bisa 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 untuk masing-masing user: user mahasiswa, user ilkom_admin, dan user ekonomi_admin.
Saya akan menggunakan contoh database universitas yang telah dibuat pada Tutorial Cara Membuat dan Menghapus User MySQL, jika anda ingin mengikuti contoh yang tersedia, silahkan buat database tersebut terlebih dahulu.
Cara Memberikan Hak Akses Kepada User dengan query GRANT
Untuk memberikan hak akses kepada sebuah user, MySQL menyediakan query GRANT. Berikut format dasar query GRANT:
GRANT hak_akses ON nama_database.nama_tabel TO 'nama_user'@'lokasi_user';
- hak_akses adalah privileges yang akan berikan kepada user tersebut. Hak akses disini berisi query yang diperbolehkan, seperti: SELECT, INSERT, UPDATE, DELETE, atau query lainnya. Jika kita ingin memberikan hak penuh untuk semua query dasar tersebut, hak_akses ini bisa diisi dengan ALL.
- nama_database adalah nama database yang ingin diberikan hak akses. Jika kita mengizinkan user tersebut dapat mengakses semua database yang ada, nama_database bisa ditulis dengan tanda bintang (*).
- nama_tabel adalah nama tabel yang ingin diberikan hak akses. Jika kita mengizinkan user dapat menggunakan semua tabel, nama_tabel bisa ditulis dengan tanda bintang (*).
- nama_user adalah nama dari user yang akan diberikan hak akses.
- lokasi_user adalah alamat IP dari user yang ingin diberikan hak akses.
Sebagai contoh penggunaan query GRANT, misalkan kita ingin memberikan privileges kepada admin untuk dapat melihat (melakukan query SELECT) pada tabel mahasiswa yang berada pada database universitas, maka berikut query yang kita gunakan:
MariaDB [(none)]> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin';Query OK, 0 rows affected (0.79 sec)
MariaDB [(none)]> GRANT SELECT ON universitas.mahasiswa TO 'admin'@'localhost';
Query OK, 0 rows affected (0.12 sec)
Query diatas terdiri dari 2 bagian, pada bagian pertama kita membuat user admin yang harus diakses dari komputer localhost (komputer yang sama dengan server MySQL berada), dan memberikan password ‘admin’. Cara membuat user telah kita bahas pada tutorial sebelumnya, Cara Membuat dan Menghapus User MySQL (CREATE USER).
Selanjutnya pada bagian kedua, kita memberikan hak akses dengan query GRANT pada untuk user ilkom_admin.
Perhatikan cara penulisan query GRANT tersebut, setelah keyword GRANT, diikuti dengan kata SELECT. SELECT disini adalah hak akses yang ingin di berikan kepada user, saya memberikan hak SELECT karena user admin saat ini hanya dapat melakukan perintah SELECT.
Setelah SELECT, diikuti dengan penulisan tabel yang diperbolehkan, yakni universitas.mahasiswa (dibaca:tabel mahasiswa pada database universitas). Bagian terakhir adalah user yang akan diberikan hak aksesnya, yakni admin pada localhost.
Untuk mencoba user admin, keluarlah dari root, dan masuk sebagai admin:
Dari tutorial Cara Membuat Hak Akses (Privileges) User MySQL dengan query GRANT ini, kita telah mempelajari cara memberikan hak akses untuk user. Hak akses itu sendiri sebenarnya dapat dibatasi pada 4 tingkatan level, yakni level global, level database, level tabel, dan level kolom. Pada tutorial diatas, kita telah mencoba level database, tabel dan kolom, namun untuk lebih dalam, kita akan membahasnya pada tutorial MySQL selanjutnya: Membahas Jenis-jenis Hak Akses dalam MySQL.
No comments