Query Pembuatan User dan Hak Akses MySQL
1. Superuser root
Tutorial Belajar MySQL Part 29: Mengenal Superuser root dan Pengertian Privileges MySQL
Sampai dengan artikel belajar MySQL sebelumnya, Tutorial MySQL: Menghapus Duplikasi (DISTINCT), kita masih belajar cara mengakses data dari MySQL, atau dalam teori database, perintah tersebut termasuk ke dalam Data Manipulation Language (DLL), dimana termasuk kelompok perintah query yang digunakan untuk memanipulasi data dalam database dan menampilkannya.
Dalam beberapa artikel kedapan kita akan belajar perintah query yang dikelompokkan sebagai Data Control Language (DCL), yakni query yang digunakan untuk mengontrol dan membatasi hak akses ke database. Kita akan membahas tentang bagaimana cara membuat user MySQL, membatasi dan mengadministrasikan serta hak akses user dalam database MySQL.
Dalam tutorial belajar MySQL ini kita akan Membahas Superuser root dan pengertian privileges MySQL.
Mengenal Hak Akses Superuser: ‘root’
Jika anda mengikuti tutorial belajar MySQL dari awal, selama ini kita hanya menggunakan 1 user dalam belajar MySQL, yaitu user ‘root’. User root ini otomatis dibuat pada saat instalasi MySQL Server pertama kali.
User ‘root’ dalam istilah keamanan komputer sering disebut sebagai ‘superuser’. Superuser merupakan tingkatan user tertinggi dimana user ini dapat melihat, mengubah, bahkan menghapus seluruh database dan menjalankan perintah apapun yang terdapat dalam MySQL.
Dalam tahap pembelajaran, kita diuntungkan dan dimudahkan dengan menggunakan user root dalam membuat database MySQL. Hal ini dikarenakan user root dapat menjalankan segala perintah dalam MySQL.
Namun pada aplikasi real dunia nyata, menggunakan user root untuk mengkases database dalam operasional sehari-hari sangat tidak disarankan. Memberikan kemampuan dan hak akses untuk menghapus seluruh database akan berdampak fatal pada operasional aplikasi.
Kita dapat membuat user baru yang hanya bisa menjalankan perintah SELECT saja, dan user tersebut dibatasi untuk tidak dapat menjalankan query DROP.
Sebagai contoh, dalam database mahasiswa yang kita gunakan sepanjang berlajar MySQL di duniailkom ini, kita mungkin butuh untuk membuat user untuk setiap jurusan, dan membatasi user tersebut hanya dapat mengakses tabel yang sesuai dengan jurusannya masing-masing.
Untuk kerperluan multi user inilah MySQL menyediakan banyak perintah yang dapat digunakan untuk membuat, dan membatasi hak akses user dalam mengakses database.
Pengertian Hak akses (Privileges) dalam MySQL
User dalam MySQL dapat dibuat dengan berbagai kombinasi hak akses yang dapat dibatasi. Apakah user tersebut dapat membuat, mengubah dan menghapus sebuah tabel, atau user tersebut kita batasi hanya untuk melihat tabel saja (perintah SELECT).
Lebih jauh lagi, MySQL memiliki kemampuan untuk membatasi hak akses dari komputer mana MySQL Client dijalankan. Misalkan tabel jurusan_fisika, hanya dapat diakses dari komputer yang alamat IP-nya berasal dari jurusan fisika saja, sehingga membatasi hak akses mahasiswa fisika untuk melihat tabel jurusan pariwisata.
Selain lokasi IP address, hak akses user dalam MySQL dapat dibatasi juga pada level tabel dan kolom tertentu saja. Misalkan dalam tabel mahasiswa terdapat kolom IPK yang harus dirahasiakan, maka kita bisa membatasi hak akses untuk kolom IPK dan membuka akses untuk kolom lainnya.
Dalam bahasa inggrisnya, hak akses ini dikenal dengan istilah ‘privileges’. Kita akan membahas cara membuat user dan membatasi hak aksesnya dalam tutorial selanjutnya.
Mengenal Database mysql
Seluruh user dan hak aksesnya (privileges), disimpan oleh mysql pada sebuah database khusus, yakni database mysql. Tabel khusus ini langsung dibuat secara otomatis pada saat instalasi MySQL. Anda bisa melihat isi database ini dengan menjalankan perintah query dibawah ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | Enter password : ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.5.27 MySQL Community Server (GPL) Copyright (c) 2000, 2011, Oracle and / or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and / or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; + --------------------+ | Database | + --------------------+ | information_schema | | mahasiswa | | mysql | | performance_schema | | test | + --------------------+ 5 rows in set (0.00 sec) mysql> USE mysql; Database changed mysql> SHOW TABLES; + ---------------------------+ | Tables_in_mysql | + ---------------------------+ | columns_priv | | db | | event | | func | | general_log | | help_category | | help_keyword | | help_relation | | help_topic | | host | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | servers | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | + ---------------------------+ 24 rows in set (0.00 sec) |
Dalam membuat user beserta hak aksesnya, MySQL menyediakan 2 cara:
- Menggunakan perintah khusus (query GRANT ) dalam pembuatan user.
- Mengubah langsung data record yang terdapat dalam database mysql .
Menggunakan perintah khusus dalam membuat uses akan lebih mudah digunakan dan lebih aman, karena jika mengubah tabel mysql langsung, kita memiliki resiko salah perintah yang dapat menyebabkan terhapusnya data dalam database mysql. Namun mengubah database mysql menawarkan fleksibilitas yang lebih dalam membuat hak akses.