OpO ~ Memahami Hak Akses (Privileges) Pada MySQL |
OpODab.com - MySQL pada dasarnya merupakan sistem database yang aman. Di MySQL kita dapat mengatur hak akses tiap user terhadap data di database. MySQL memungkinkan kita mengatur hak akses user sampai pada tingkat kolom. Artinya kita dapat mengatur kolom tertentu dapat diakses oleh user siapa saja. Semua pengaturan hak akses (privileges) tersimpan di database mysql yang secara default sudah ada di sistem MySQL.
Di dalam database mysql antara lain terdapat tabel-tabel sebagai berikut:
- user. Tabel ini digunakan untuk menyimpan informasi user MySQL yang mencakup informasi user, password dan host user, serta informasi hak akses user.
- db. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap database.
- host. Tabel ini digunakan untuk menyimpan daftar komputer (bisa berupa alamat IP, nama komputer, atau %) yang berhak mengakses suatu database.
- tables_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap tabel. Dengan kata lain menyimpan tabel ini dapat diakses oleh siapa dengan hak akses apa saja.
- columns_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap kolom.
- procs_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap procedure.
- proc. Tabel ini digunakan untuk menyimpan informasi mengenai daftar procedure dalam MySQL.
- func. Tabel ini digunakan untuk menyimpan informasi mengenai function yang didefinisikan di MySQL.
GRANT dan REVOKE di MySQL Untuk mengatur hak akses di MySQL, pada dasarnya kita menggunakan bentuk perintah GRANT dan REVOKE. Berikut ini bentuk umum perintah GRANT dan REVOKE secara sederhana :
GRANT priv_type
REVOKE priv_type
Berikut ini pilihan untuk priv_type dalam bentuk umum perintah GRANT dan REVOKE di atas:
Perintah GRANT dan REVOKE dapat digunakan untuk membuat user baru maupun mengatur hak akses user yang sudah ada dengan hak akses (privileges ) tertentu. Tingkatan hak akses user dapat terbagi menjadi tingkatan global (tersimpan di tabel mysql.user), database (tersimpan di tabel mysql.host dan mysql.db), tabel (tersimpan di tabel mysql.tables_priv) dan kolom (tersimpan di tabel mysql.columns_priv). Setiap perubahan hak akses di MySQL, termasuk menambahkan user baru, tidak akan berlaku sebelum diakhiri dengan perintah FLUSH PRIVILEGES.
Menambahkan dan Mengatur Hak Akses User
Untuk menambahkan dan mengatur hak akses (privileges) user di MySQL, kita dapat menggunakan 2 cara.
- Pertama langsung melakukan INSERT atau UPDATE ke tabel mysql.user, dan tabel-tabel lain sesuai dengan hak aksesnya. Cara ini tidak disarankan karena mengandung resiko terjadi kesalahan.
- Kedua adalah dengan perintah GRANT dan REVOKE. Perintah ini mudah dipahami dan diterapkan karena lebih sederhana. MySQL secara otomatis akan menyimpan informasi user ke tabel sesuai dengan hak aksesnya. Berikut ini beberapa contoh menambahkan user baru di MySQL:
Menambahkan user baru dengan nama user ‘lholhox’ yang dapat mengakses semua database dari komputer ‘localhost’ dengan password ‘lholhox’. User ini juga berhak menjalankan perintah GRANT untuk user lain.
Menambahkan user baru dengan nama user ‘agus’, tidak dapat mengakses database (*.*), hanya dapat mengakses dari komputer dengan IP ‘192.168.1.5’ dan password ‘agus’.
Menambahkan user baru dengan nama user ‘admin, hanya dapat mengakses database ‘penjualan’, hanya dapat mengakses dari komputer ‘localhost’ dan dengan password ‘admin’.
Berikut ini beberapa contoh mengatur hak akses user yang sudah ada di MySQL:
Mengubah hak akses user ‘agus’ agar dapat mengakses database ‘penjualan’.
Mengubah hak akses user ‘admin’ agar dapat CREATE di database ‘penjualan’.
Menghapus Hak Akses User
Untuk menghapus hak akses user, dapat dilakukan dengan perintah REVOKE. Berikut ini contohnya:
Menghapus hak akses user ‘admin’ terhadap database ‘penjualan’.
Mengganti Password User
Untuk mengganti password suatu user di MySQL, kita tinggal menjalankan perintah UPDATE terhadap field Password di tabel mysql.user. Password tersebut diekripsi dengan fungsi PASSWORD().
Berikut ini perintah SQL yang dapat digunakan untuk mengganti password user: