Pada seri Belajar SQL Database bagian 15, kita telah mempelajari teknik denormalisasi database, yaitu proses mengatur struktur tabel untuk meningkatkan performa database pada kondisi tertentu.
Selain struktur dan performa, keamanan database juga menjadi hal penting yang perlu diperhatikan. Saat menggunakan MySQL, kita biasanya menggunakan akun root yang memiliki hak akses penuh untuk mengelola database.
Pada seri Belajar SQL Database bagian 16 ini, kita akan belajar cara membuat user dan mengatur hak akses (privilege) sesuai kebutuhan. Dengan demikian, setiap pengguna dapat diberikan akses yang berbeda tanpa harus menggunakan akun root. Mari simak pembahasannya!
Mengenal User dan Privilege pada Database
Sebelum masuk ke praktik, kita perlu memahami terlebih dahulu apa yang dimaksud dengan user dan privilege di MySQL.
User adalah akun yang digunakan untuk mengakses server MySQL. Setiap user memiliki username, password, serta hak akses yang dapat diatur sesuai kebutuhan. Sedangkan privilege adalah izin yang diberikan kepada user untuk melakukan aktivitas tertentu pada database.
Beberapa contoh privilege yang umum digunakan yaitu:
- SELECT untuk melihat data.
- INSERT untuk menambahkan data.
- UPDATE untuk mengubah data.
- DELETE untuk menghapus data.
Sebagai contoh, sebuah website biasanya tidak memerlukan akses penuh seperti akun root. Website hanya membutuhkan akses tertentu pada database agar dapat membaca maupun menyimpan data.
Dengan menggunakan user khusus dan memberikan privilege sesuai kebutuhan, keamanan database dapat lebih terjaga karena aplikasi tidak memiliki akses yang berlebihan.
Mengenal Format User pada MySQL
Di MySQL, sebuah user tidak hanya ditentukan berdasarkan username saja, tetapi juga berdasarkan lokasi atau sumber koneksi yang disebut host.
Format penulisan user pada MySQL adalah:
'username'@'host'Contohnya:
'adminweb'@'localhost'Artinya, user adminweb hanya dapat digunakan untuk mengakses MySQL dari server yang sama.
Selain menggunakan localhost, MySQL juga mendukung penggunaan tanda % sebagai host.
Contoh:
'adminweb'@'%'Artinya, user adminweb dapat melakukan koneksi dari berbagai host.
Pengaturan host ini berguna untuk membatasi sumber koneksi user sehingga akses ke database dapat lebih terkontrol dan aman.
Membuat User Baru di MySQL
Untuk membuat user baru di MySQL, kita perlu masuk terlebih dahulu menggunakan akun yang memiliki hak akses administrator, seperti root.
Jalankan perintah berikut:
mysql -u root -pSetelah berhasil masuk, buat user baru menggunakan perintah:
CREATE USER 'adminweb'@'localhost'
IDENTIFIED BY 'password123';Pada contoh di atas, kita membuat user dengan nama adminweb yang hanya dapat digunakan dari server lokal (localhost).
Untuk memastikan user berhasil dibuat, kita dapat melihat daftar user yang tersedia dengan menjalankan query berikut:
SELECT User, Host
FROM mysql.user;Jika user adminweb sudah muncul pada hasil query, maka proses pembuatan user berhasil dilakukan.
Namun, user tersebut belum dapat mengakses database karena belum memiliki hak akses (privilege). Pada tahap berikutnya, kita akan memberikan privilege sesuai dengan kebutuhan user tersebut.
Memberikan Hak Akses (Privilege) pada User
Setelah membuat user, langkah berikutnya adalah memberikan hak akses sesuai dengan kebutuhan.
Untuk memberikan seluruh akses pada database tertentu, gunakan perintah berikut:
GRANT ALL PRIVILEGES
ON akademik.*
TO 'adminweb'@'localhost';Perintah tersebut akan memberikan seluruh hak akses kepada user adminweb pada database akademik, seperti membaca, menambahkan, mengubah, hingga menghapus data.
Namun, dalam praktiknya kita tidak selalu perlu memberikan semua akses kepada setiap user. Sebaiknya, hak akses diberikan sesuai dengan kebutuhan agar keamanan database tetap terjaga.
Misalnya, jika sebuah user hanya perlu melihat data, kita cukup memberikan privilege SELECT.
GRANT SELECT
ON akademik.*
TO 'adminweb'@'localhost';Dengan perintah tersebut, user hanya dapat membaca data dari database akademik tanpa memiliki izin untuk menambahkan, mengubah, atau menghapus data.
Jenis-Jenis Privilege di MySQL
MySQL menyediakan beberapa jenis privilege yang dapat digunakan sesuai kebutuhan.
| Privilege | Fungsi |
| SELECT | Melihat data |
| INSERT | Menambahkan data |
| UPDATE | Mengubah data |
| DELETE | Menghapus data |
| CREATE | Membuat database atau tabel |
| ALTER | Mengubah struktur tabel |
| DROP | Menghapus database atau tabel |
| ALL PRIVILEGES | Memberikan seluruh akses |
Pemberian privilege sebaiknya dilakukan sesuai kebutuhan. Semakin luas akses yang diberikan, semakin besar pula risiko jika terjadi kesalahan.
Melihat Hak Akses User
Untuk mengetahui hak akses yang dimiliki oleh sebuah user, kita dapat menggunakan perintah berikut:
SHOW GRANTS FOR 'adminweb'@'localhost';Query tersebut akan menampilkan daftar privilege yang diberikan kepada user adminweb.
Dengan cara ini, administrator dapat memastikan apakah hak akses yang dimiliki user sudah sesuai dengan kebutuhan atau masih perlu disesuaikan.
Menghapus Hak Akses User
Jika suatu user sudah tidak membutuhkan hak akses tertentu, kita dapat menghapus privilege tersebut menggunakan perintah REVOKE.
Contohnya:
REVOKE INSERT
ON akademik.*
FROM 'adminweb'@'localhost';Perintah tersebut akan menghapus izin INSERT dari user adminweb, sehingga user tidak lagi dapat menambahkan data baru ke database akademik.
Dengan menggunakan REVOKE, kita dapat menyesuaikan kembali hak akses user tanpa harus membuat akun baru.
Menghapus User MySQL
Selain menghapus hak akses, kita juga dapat menghapus user yang sudah tidak digunakan.
Gunakan perintah berikut:
DROP USER 'adminweb'@'localhost';Perintah tersebut akan menghapus user adminweb dari server MySQL.
Menghapus user yang sudah tidak digunakan merupakan salah satu langkah sederhana untuk menjaga keamanan database dan memastikan hanya akun yang diperlukan saja yang memiliki akses.
Tips Mengelola User dan Privilege MySQL
Agar database tetap aman, berikut beberapa hal yang perlu diperhatikan:
- Hindari menggunakan akun root untuk aplikasi.
- Gunakan password yang kuat.
- Berikan akses sesuai kebutuhan user.
- Jangan memberikan ALL PRIVILEGES jika tidak diperlukan.
- Hapus user yang sudah tidak digunakan.
- Periksa kembali hak akses secara berkala.
Dengan pengaturan privilege yang tepat, database akan lebih aman dan lebih mudah dikelola.
Kesimpulan
User dan privilege merupakan fitur penting di MySQL yang digunakan untuk mengatur siapa saja yang dapat mengakses database serta aktivitas apa saja yang dapat dilakukan. Dengan menggunakan akun khusus dan memberikan hak akses sesuai kebutuhan, keamanan database dapat lebih terjaga dibandingkan menggunakan akun root untuk semua aktivitas.
Demikian seri Belajar SQL Database bagian 16 tentang Mengenal User dan Hak Akses (Privilege) di MySQL. Dengan memahami user dan privilege, Anda dapat mengatur akses database dengan lebih aman serta menghindari penggunaan hak akses yang tidak diperlukan.
Nantikan seri Belajar SQL Database berikutnya untuk mempelajari konsep SQL lainnya secara bertahap, mulai dari dasar hingga teknik yang lebih lanjut.


