Belajar MySQL Part 31 : Mengalihkan Hak Akses User MySQL (GRANT OPTION)
Dalam tutorial MySQL ini, kita akan membahas cara mengalihkan/memberikan hak akses dari seorang user MySQL ke user lainnya. Untuk keperluan ini MySQL menyediakan perintah GRANT OPTION.
Pengertian Hak Akses GRANT OPTION
Ada kalanya seorang user MySQL ingin mengalihkan hak akses yang ia miliki ke user lainnya.
Misalkan mahasiswa ilkom sudah dirasa terlalu banyak, sehingga user admin1 membutuhkan admin baru untuk membantunya. User admin1 bisa saja mengalihkan hak akses yang dimilikinya (tanpa mengapus hak akses sendiri) ke user admin2.
Kemampuan untuk memberikan hak akses inilah yang disebut dengan hak GRANT OPTION. Tetapi syarat untuk seorang user dapat mengalihkan hak aksesnya adalah sewaktu pembuatan user asal, user root harus memberikan hak GRANT OPTION.
Cara Penggunaan dan Penulisan query GRANT OPTION (1)
Terdapat beberapa cara penulisan GRANT OPTION. Cara pertama yaitu menuliskan GRANT OPTION secara terpisah dengan hak akses. Cara ini digunakan jika user telah ada dan hak akses telah diberikan.
Format dasar penulisan GRANT OPTION:
Sebagai contoh latihan, saya akan membuat user ilkom_admin1 dengan hak GRANT OPTION, lalu memberikan akses tersebut ke user ilkom_admin2.
Untuk langkah awal, saya akan masuk sebagai root dan membuat user ilkom_admin1 dengak hak akses query SELECT pada tabel mahasiswa_ilkom, lalu memberikan hak akses GRANT OPTION untuk user ilkom_admin1. Berikut query yang digunakan:
Perhatikan pada baris setelah saya membuat user ilkom_admin1 (baris ke-14) dan hak akses SELECT (baris ke-17). Pada baris ke-21 saya memberikan perintah GRANT OPTION untuk user ilkom_admin1. Lalu pada baris ke 25 saya menggunakan menggunakan query SHOW GRANTS FOR untuk memeriksa hak akses ilkom_admin1, dan seperti yang terlihat pada baris ke-35, ada tambahan penjelasan pada user ilkom_admin1 ‘WITH GRANT OPTION’.
Jika anda mencoba masuk sebagai user ilkom_admin1, user tersebut dapat melihat isi seluruh tabel mahasiswa_ilkom. Untuk mencoba memberikan hak akses yang sama kepada user ilkom_admin2, pertama-tama dari user root kita akan membuat user ilkom_admin2. Berikut querynya:
Perintah Diatas di gunakan untk membuat user admin2 tanpa hak akses , karena kita akan memberikan hak akses, karena kita akan memberikan hak aksesnya melalui user admin1. Untuk mencoba hak GRANT OPTION ini, keluarlah dari root, dan masuk sebagai admin1.
Perhatikan bahwa penambahan kata WITH GRANT OPTION pada bagian akhir perintah.
Sebagai contoh, saya akan membuat user ekonomi_admin1 dengan hak akses ALL PRIVILEGES pada tabel mahasiswa_ekonomi dengan hak GRANT OPTION.
Dari query diatas, saya menggabungkan query pemberian hak akses dengan pemberian GRANT OPTION. Sebagai latihan, anda bisa meneruskan membuat user ekonomi_admin2, dan memberikan hak akses ALL dari user ekonomi_admin1.
Namun pada kasus-kasus tertentu, hak akses GRANT OPTION memberikan fleksibilitas yang tinggi dalam merancang database.
Selanjutnya kita akan membahas cara MySQL menyimpan password user, pada tutorial Pengertian Fungsi Hashing dan Cara MySQL Menyimpan Password.
Pengertian Hak Akses GRANT OPTION
Ada kalanya seorang user MySQL ingin mengalihkan hak akses yang ia miliki ke user lainnya.
Misalkan mahasiswa ilkom sudah dirasa terlalu banyak, sehingga user admin1 membutuhkan admin baru untuk membantunya. User admin1 bisa saja mengalihkan hak akses yang dimilikinya (tanpa mengapus hak akses sendiri) ke user admin2.
Kemampuan untuk memberikan hak akses inilah yang disebut dengan hak GRANT OPTION. Tetapi syarat untuk seorang user dapat mengalihkan hak aksesnya adalah sewaktu pembuatan user asal, user root harus memberikan hak GRANT OPTION.
Cara Penggunaan dan Penulisan query GRANT OPTION (1)
Terdapat beberapa cara penulisan GRANT OPTION. Cara pertama yaitu menuliskan GRANT OPTION secara terpisah dengan hak akses. Cara ini digunakan jika user telah ada dan hak akses telah diberikan.
Format dasar penulisan GRANT OPTION:
GRANT GRANT OPTION ON nama_database.nama_tabel TO 'nama_user'@'lokasi_user';
- GRANT OPTION adalah perintah yang dituliskan jika kita mengizinkan user tersebut bisa memberikan hak akses kepada user lainnya.
- 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 latihan, saya akan membuat user ilkom_admin1 dengan hak GRANT OPTION, lalu memberikan akses tersebut ke user ilkom_admin2.
Untuk langkah awal, saya akan masuk sebagai root dan membuat user ilkom_admin1 dengak hak akses query SELECT pada tabel mahasiswa_ilkom, lalu memberikan hak akses GRANT OPTION untuk user ilkom_admin1. Berikut query yang digunakan:
Perhatikan pada baris setelah saya membuat user ilkom_admin1 (baris ke-14) dan hak akses SELECT (baris ke-17). Pada baris ke-21 saya memberikan perintah GRANT OPTION untuk user ilkom_admin1. Lalu pada baris ke 25 saya menggunakan menggunakan query SHOW GRANTS FOR untuk memeriksa hak akses ilkom_admin1, dan seperti yang terlihat pada baris ke-35, ada tambahan penjelasan pada user ilkom_admin1 ‘WITH GRANT OPTION’.
Jika anda mencoba masuk sebagai user ilkom_admin1, user tersebut dapat melihat isi seluruh tabel mahasiswa_ilkom. Untuk mencoba memberikan hak akses yang sama kepada user ilkom_admin2, pertama-tama dari user root kita akan membuat user ilkom_admin2. Berikut querynya:
Perintah Diatas di gunakan untk membuat user admin2 tanpa hak akses , karena kita akan memberikan hak akses, karena kita akan memberikan hak aksesnya melalui user admin1. Untuk mencoba hak GRANT OPTION ini, keluarlah dari root, dan masuk sebagai admin1.
Setelah masuk sebagai user admin1 (baris ke-4), saya menjalankan beberapa query untuk mengecek hak akses admin1 dengan perintah SELECT pada tabel mahasiswa_ilkom (baris ke-17 dan 29). Terlihat bahwa user admin1 dapat menjalankan perintah SELECT tersebut tanpa masalah.
Pada baris ke 40 dan 44 saya menjalankan perintah GRANT untuk meneruskan hak akses SELECT kepada user admin2. Baris 40 berjalan sukses karena user admin1 memiliki hak akses GRANT OPTION untuk query SELECT.
Namun perintah pada baris ke 44, menghasilkan error karena user admin1 tidak memiliki hak akses untuk perintah INSERT, sehingga tidak bisa meneruskan hak aksesnya kemapa user admin2.
Sebagai langkah terakhir, saya akan mencoba masuk dengan user admin2 untuk testing perintah SELECT yang didapat dari user admin1.
Seperti yang diharapkan , user admin2 dapat menjalankan perintah SELECT yang diberikan oleh user admin1.
Cara Penggunaan dan Penulisan query GRANT OPTION (2)
Selain format penulisan GRANT OPTION yang diberikan pada perintah terpisah setelah membuat user dan hak aksesnya seperti contoh sebelumnya, MySQL memiliki cara kedua dengan menyatukannya penulisan GRANT OPTION dengan pemberian hak akses.
Berikut adalah format dasar penulisannya:
GRANT hak_akses ON nama_database.nama_tabel TO 'nama_user'@'lokasi_user' with GRANT OPTION;
Perhatikan bahwa penambahan kata WITH GRANT OPTION pada bagian akhir perintah.
Sebagai contoh, saya akan membuat user ekonomi_admin1 dengan hak akses ALL PRIVILEGES pada tabel mahasiswa_ekonomi dengan hak GRANT OPTION.
Dari query diatas, saya menggabungkan query pemberian hak akses dengan pemberian GRANT OPTION. Sebagai latihan, anda bisa meneruskan membuat user ekonomi_admin2, dan memberikan hak akses ALL dari user ekonomi_admin1.
Hak GRANT OPTION sebaiknya diberikan dengan hati-hati. Karena sifatnya yang dapat meneruskan hak akses kepada orang lain, perintah GRANT OPTION bisa digunakan dengan cara yang diluar prediksi. User yang seharusnya tidak memiliki akses untuk tabel tertentu, bisa saja tiba-tiba menambahkan data baru pada tabel tersebut karena mendapat hak akses dari user lainnya.
Namun pada kasus-kasus tertentu, hak akses GRANT OPTION memberikan fleksibilitas yang tinggi dalam merancang database.
Selanjutnya kita akan membahas cara MySQL menyimpan password user, pada tutorial Pengertian Fungsi Hashing dan Cara MySQL Menyimpan Password.
No comments