Cara Create New User dan Menambahkan Grant Permission di MySQL

Di artikel sebelumnya saya sudah menulis tentang cara membuat database dengan cmd, yang sebenarnya mirip-mirip dengan mengakses mysql melalui terminal linux ataupun Mac, hanya saja perlu konfigurasi atau cara akses yang sedikit berbeda. Maklumlah CMDkan milik Windows.

Jadi sebelum lanjut ke cara create new user di MySQL, sebaiknya kalian bisa baca dulu artikel cara membuat database di CMD agar kalian bisa mengikuti tutorial ini.

Kenapa Harus Membuat User Baru?

Dalam tahap development (di lokal), saya sendiri tidak pernah peduli dengan “kenapa harus membuat user”, selama bisa mengakses database dan saya bisa mengerjakan project, saya anggap cukup.

Tapi beda cerita ketika sudah masuk tahap production atau sudah online. Membuat user baru di MySQL adalah suatu keharusan, demi meningkatkan keamanan. Akan sangat gawat jika kita masih menggunakan user root untuk semua database website kita.

Jika masih menggunakan root sudah dapat dipastikan ketika satu database website kena serangan hacker, maka habislah sudah semua database kita.

Cara Create New User di MySQL

Bagi penguna phpmyadmin tentu membuat user baru bukanlah hal yang sulit, dengan tampilan yang manusiawi dan mudah dipahami tentu dengan sedikit baca tutorial pasti langsung bisa, pengaturan parameter, argument ataupun Grant Permission-nyapun tinggal klik-klik saja.

Tapi semua akan tampak berbeda ketika kita berhadapan dengan CLI (Command Line Interface) yang menuntut kita untuk memasukan perintah dengan keyboard pada layar hitam ( kurang lebih kayak hackerlah ) keren tapi agak gimana gitu, tapi gak papa untuk itulah tutorial ini hadir.

Di tutorial sebelumnya (membuat database di CMD) kita sudah belajar masuk kedalam MySQL dan belajar membuat sebuah database. Jadi kita langsung ke cara create new usernya saja.

  1. Pastikan kalian sudah berada masuk ke mysql
  2. kemudian ketikan shell atau perintah mysql berikut ini:
 CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

dimana :

newuser adalah nama dari user baru yang ingin dibuat dan

password adalah password untuk user baru tersebut.

berikut contoh dari create new user dengan nama usernya bambang dan passwordnya tampan

kemudian tekan Enter

untuk menguji user barunya, kalian bisa keluar dulu dari MySQL dengan mengetikan exit enter atau tekan CTRL+C ( atau dengan cara ekstrim, close window CMD/terminalnya )

lalu coba masuk MySQL dengan user baru dengan perintah

 mysql -u username -p

tekan enter dan masukan passwordnya.

contoh :

Dalam contoh ini passwordnya adalah tampan maka ketikan tampan lalu enter. jika benar maka kalian akan masuk ke MySQL, jika salah Coba ulangi langkah pertama, jika masih tidak bisa mari kita diskusi.

Baik. Sampai di sini kita sudah berhasil membuat user baru untuk mysql kita, tapi sayang user tersebut belum bisa melakukan apapun.

buktinya adalah ketika kita membuat databae baru dengan nama db_baru akan muncul pesan error seperti berikut ini.

Access denied for user 'bambang'@'localhost' to database 'db_baru'

dan ketika saya ingin melihat database yang ada dengan perintah

 show databases;

yang muncul cuma dua database, padahal di sana (saat pakai user root ) saya sudah membuat puluhan database, baik yang masih dipakai atau cuma dibuat tapi tidak dipakai (karena males drop databasenya hehehe).

Hal ini terjadi karena ada pembatasan hak akses ( Permission ) antar user, sehingga user baru yang tidak memiliki Permission untuk membuat database baru, maka sampai upin ipin punya tuju belas cucu, user tersebut tidak akan bisa membuat database baru.

Jangankan membuat database baru, melihat database yang dibuat user lain atau root saja tidak bisa hehehe.

SOLUSINYA adalah dengan memberikan Permission pada user tersebut untuk melakukan ini itu dengan perintah GRANT. caranya ? lanjutkan saja bacanya 😀

Menambahkan Grant Permission di MySQL

Untuk menambahkan Permission pada user sebenarnya cukup mudah (kalau tau), Kita cukup memasukan perintah berikut ini dan permission pun ditambahkan.

 GRANT jenis_permission ON nama_db.nama_table TO 'namauser'@'localhost';

bingung? mari kita beda satu per satu.

Macam-macam Grant Permission

Pertama adalah jenis_permission, dimana ada beberapa jenis permission yang perlu kita ketahui agar kita bisa memberikan permission pada user dengan benar.

CREATE

Jenis permission yang pertama adalah CREATE, dimana dengan jenis permission ini user dapat melakukan CREATE, seperti create user, create database dan create table.

DROP

Jenis permission yang kedua adalah DROP, dimana dengan jenis permission ini user dapat melakukan DROP (menghapus), seperti drop user, drop database dan drop table.

DELETE

Jenis permission yang ketiga adalah DELETE, dimana dengan jenis permission ini user dapat melakukan query DELETE,

DELETE hanya untuk menghapus ROW di dalam table, sedang DROP untuk menghapus user, database dan table.

INSERT

Jenis permission yang keempat adalah INSERT, dimana dengan jenis permission ini user dapat melakukan query INSERT atau menambahkan data ke table,

SELECT

Jenis permission yang kelima adalah SELECT, dimana dengan jenis permission ini user dapat melakukan query SELECT atau memanggil data dari dalam table,

UPDATE

Jenis permission yang keenam dalah UPDATE, dimana dengan jenis permission ini user dapat melakukan query UPDATE untuk memperbarui data di dalam table,

ALL PRIVILEGES

Jenis permission yang ketujuh adalah ALL PRIVILEGES, dimana dengan jenis permission ini user dapat melakukan semua aktifitas mulai membuat dan menghapus user, database dan table serta melakukan aktifitas CRUD pada table dengan bebas.

Membuat GRANT Permission Agar User Dapat Mengkases Semua Database

Walaupun ini termasuk dalam kategori HARAM, karena ngapain kita buat user baru kalau levelnya sama seperti root tapi gak papa buat belajar aja.

kalian cukup mengetikan perintah berikut ini:

 GRANT ALL PRIVILEGES ON *.* TO 'namauser'@'localhost';

kalian perhatikan di *.* yang dibaca semua database . semua table

Membuat GRANT Permission Agar User Dapat Mengkases Database Tertentu

Nah saya lebih menyarankan untuk menggunakan cara ini, karena lebih masuk akal kenapa harus membuat user baru padahal sudah user root.

untuk memberikan permission database tertentu pada user, kita bisa menggunakan perintah berikut:

 GRANT ALL PRIVILEGES ON nama_db.* TO 'namauser'@'localhost';

Perhatikan nama_db.* dapat dibaca hanya database nama_db . semua table

Membuat GRANT Permission Agar User Dapat Mengkases Database dan Table Tertentu

Semua database sudah , database tertentu sudah, terakhir adalah table tertentu. saya rasa dari dua contoh diatas sudah bisa ketebak bakal seperti apa perintahnya.

Namun untuk memperjelas kita lihat perintahnya secara langsung berikut ini:

 GRANT ALL PRIVILEGES ON nama_db.nama_table TO 'namauser'@'localhost';

mudah bukan?

Perintah Create New User dan Grant Permission Sekaligus

Jika diatas kita membuat user dan Memberikan Grant Permission satu persatu maka yang terakhir ini adalah cara tercepat Create New User dan Grant Permission di MySQL. dan cara ini yang sering saya gunakan.

 GRANT ALL PRIVILEGES ON nama_db.* TO 'namauser'@'localhost' IDENTIFIED BY 'password';

dengan perintah diatas kita sudah membuat user baru dan memberikan Grant Permission ALL PRIVILEGES pada database tertentu.

Penutup

Sebagai penutup, perlu saya beritahukan bahwa setelah kita menjalankan perintah GRANT jangan lupa untuk menjalankan perintah berikut ini

 FLUSH PRIVILEGES;

Tanpa menjalankan perintah FLUSH PRIVILEGES; GRANT Permission yang kita pada suatu user tidak akan langsung berefek dan ini bisa membuat siapapun stress dikira MySQLnya error.

Leave a Comment