Tutorial Belajar MySQL Part 30: Cara Membuat dan Menghapus User MySQL (CREATE USER)

Setelah memahami pengertian Superuser root dan Privileges dalam MySQL, serta pentingnya membatasi hak akses user, dalam tutorial kali ini kita akan mempelajari cara membuat user MySQL, membatasinya dengan password, membatasi hak akses dari alamat IP, serta menghapus user dalam MySQL.

Pembuatan user baru dalam MySQL, hanya dapat dilakukan menggunakan user root, atau user yang diberikan hak akses GRANT OPTION (pembahasan tentang GRANT OPTION akan kita bahas dalam artikel lainnya).

Di karenakan kita akan sering keluar masuk mysql mengunakan beberapa user, maka untuk mengikuti tutorial ini disarankan menggakses MySQL secara manual dari DOS, seperti pada Tutorial Belajar MySQL: Menjalankan MySQL Client.

Menyiapkan Database Sample: universitas

Sebagai database contoh yang akan digunakan untuk belajar membuat user baru MySQL, kita akan membuat sebuah database universitas. Silahkan masuk dengan user root ke dalam MySQL Server.

D:\MySQL\bin>mysql -u root –pqwerty
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> CREATE DATABASE universitas;
Query OK, 1 row affected (0.00 sec)

mysql> USE universitas;
Database changed

Database ini akan memiliki 2 buah tabel, yakni tabel mahasiswa_ilkom, dan tabel mahasiswa_ekonomi. Masing-masing tabel berisi tentang data mahasiswa. Dalam query berikut, kita membuat kedua tabel tersebut dan menyiapkan data sampel sebagai contoh.

mysql> CREATE TABLE mahasiswa_ilkom ( nim CHAR(9), nama CHAR(50), umur INT, 
tempat_lahir CHAR(50), IPK DECIMAL (3,2) );
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO mahasiswa_ilkom VALUES ('089045001', 'Andi Suryo', 23, 
'Jakarta', 2.7);
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO mahasiswa_ilkom VALUES ('109245021', 'Santi Syanum',
 21, 'Malang', 3.2);
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO mahasiswa_ilkom VALUES ('099145055', 'Neil Situmorang',
 22, 'Medan', 1.9);
Query OK, 1 row affected (0.12 sec)

mysql> CREATE TABLE mahasiswa_ekonomi ( nim CHAR(9), nama CHAR(50), 
umur INT, tempat_lahir CHAR(50), IPK DECIMAL (3,2) );
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO mahasiswa_ekonomi VALUES ('089023013', 
'Alex Supriyanto', 23, 'Surabaya', 2.9);
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO mahasiswa_ekonomi VALUES ('109223041', 'Rani Sabrina',
 21, 'Padang',3.7);
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO mahasiswa_ekonomi VALUES ('099123043', 'Ocha Septriani',
 22,'Makasar', 3.1);
Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM mahasiswa_ilkom;
+-----------+-----------------+------+--------------+------+
| nim       | nama            | umur | tempat_lahir | IPK  |
+-----------+-----------------+------+--------------+------+
| 089045001 | Andi Suryo      |   23 | Jakarta      | 2.70 |
| 109245021 | Santi Syanum    |   21 | Malang       | 3.20 |
| 099145055 | Neil Situmorang |   22 | Medan        | 1.90 |
+-----------+-----------------+------+--------------+------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM mahasiswa_ekonomi;
+-----------+-----------------+------+--------------+------+
| nim       | nama            | umur | tempat_lahir | IPK  |
+-----------+-----------------+------+--------------+------+
| 089023013 | Alex Supriyanto |   23 | Surabaya     | 2.90 |
| 109223041 | Rani Sabrina    |   21 | Padang       | 3.70 |
| 099123043 | Ocha Septriani  |   22 | Makasar      | 3.10 |
+-----------+-----------------+------+--------------+------+
3 rows in set (0.00 sec)

Cara Membuat User Baru dalam MySQL

Untuk membuat user baru, MySQL menyediakan query CREATE USER, berikut format dasar perintah:

CREATE USER 'nama_user';
  • nama_user adalah nama dari user yang akan dibuat, maksimal 16 karakter.

Untuk database universitas, kita akan membuat user ilkom_admin, berikut contoh querynya:

mysql> CREATE USER 'ilkom_admin';
Query OK, 0 rows affected (0.09 sec)

Dengan query CREATE USER tersebut, sebuah user baru telah dibuat di dalam MySQL Server. Untuk mencoba menggunakan user tersebut, kita harus keluar dari user root yang digunakan saat ini, dan login sebagai ilkom_admin.

Agar bisa keluar dari user root dan masuk sebagai user lainnya, harus mengakses MySQL Client dari CMD Windows. Untuk penjelasan lebih lanjut dapat dipelajari dalam artikel Tutorial Belajar MySQL: Menjalankan MySQL Client.
mysql> exit;
Bye

D:\MySQL\bin>mysql -u ilkom_admin

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4

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>

Pada contoh diatas, pertama-tama kita menggunakan perintah exit untuk keluar dari root. Setelah itu kita log in menggunakan user yang baru saja dibuat, yakni ilkom_admin.

Jika anda memeriksa database untuk user ini, user ilkom_admin belum memiliki hak akses untuk database apapun. Kita akan membahasnya pada tutorial selanjutnya.

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.10 sec)

Terlihat bahwa hasil SHOW DATABASES dari user ilkom_admin hanya berisi database information_schema. Database information_schema sendiri bukan merupakan database 'asli'. information_schema akan ada untuk setiap user MySQL dan hanya database 'virtual' yang digunakan untuk menyimpan metadata (data keterangan) tentang database. Kita hanya bisa menggunakan query SELECT untuk database ini, tetapi tidak untuk query DELETE, INSERT, maupun UPDATE.


Cara Membuat User dalam MySQL dengan Password

User ilkom_admin yang baru saja dibuat, dapat diakses oleh siapapun sepanjang ia mengetahui username yang digunakan, yakni ilkom_admin.

Untuk menambah keamanan, kita seharusnya menambahkan password yang harus diinputkan oleh user pada saat login. Format dasar querynya:

CREATE USER 'nama_user' IDENTIFIED BY 'password' ;
  • nama_user adalah nama dari user yang akan dibuat, maksimal 16 karakter.
  • password adalah password yang harus dituliskan pada saat nama_user mengakses MySQL server.

Misalkan kita ingin membuat user ilkom_admin2 dengan password 'r4hasia', maka querynya:

Jika anda masih menggunakan user ilkom_admin, keluarlah terlebih dahulu dan masuk kembali sebagai root.
mysql> CREATE USER ilkom_admin2 IDENTIFIED BY 'rahasia';
Query OK, 0 rows affected (0.01 sec)

Dan jika anda ingin mengakses user tersebut, haruslah menggunakan password:

D:\MySQL\bin>mysql -u ilkom_admin2
ERROR 1045 (28000): Access denied for user 'ilkom_admin2'@'localhost' 
(using password: NO)

D:\MySQL\bin>mysql -u ilkom_admin2 –pr4hasia

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10

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>

Terlihat dari contoh query pertama jika tanpa password, MySQL akan mengeluarkan pesan error.


Cara Membuat User MySQL dengan batasan IP address

Dalam membuat user, MySQL menyediakan pilihan untuk membatasi hak akses user tersebut dari lokasi tempat user mengakses MySQL server.

Seperti yang telah kita bahas pada Tutorial Belajar MySQL: Menjalankan MySQL Server, bahwa pengaksesan MySQL Server dapat dilakukan dari komputer mana saja sepanjang kita memiliki program MySQL Client dan terhubung melalui jaringan dengan MySQL Server. MySQL menggunakan alamat IP address untuk mengetahui darimana MySQL Server diakses.

Misalkan sebuah kantor memiliki 6 komputer yang terhubung dalam jaringan. MySQL Server berada pada komputer yang berada di alamat IP 192.168.0.1., sedangkan komputer lainnya memiliki alamat IP 192.168.0.2 sampai dengan 192.168.0.6. Kebijakan perusahaan adalah untuk mengakses tabel yang bersifat rahasia hanya bisa diakses dari komputer dengan IP 192.168.0.4. Untuk keperluan ini MySQL menyediakan cara agar sebuah user hanya dapat diakses dari alamat IP tertentu saja.

Format dasar query:

CREATE USER 'nama_user'@'lokasi_user' IDENTIFIED BY 'password';
  • nama_user adalah nama dari user yang akan dibuat, maksimal 16 karakter.
  • lokasi_user adalah lokasi tempat user yang diperbolehkan mengakses. Jika berada di komputer yang sama dengan MySQL Server, lokasi_user ditulis sebagai 'localhost', namun jika berada di komputer tertentu, kita bisa mengisinya dengan alamat IP seperti '192.168.0.2', atau alamat host domain seperti user.duniailkom
  • password adalah password yang harus dituliskan pada saat nama_user mengakses MySQL server.

Sebagai contoh query, misalkan kita ingin membuat user ilkom_admin3 dengan password r4hasia dan hanya bisa diakses dari IP 192.168.0.4, maka querynya:

mysql> CREATE USER 'ilkom_admin3'@'192.168.0.4' IDENTIFIED by 'r4hasia';
Query OK, 0 rows affected (0.01 sec)

Jika kita menggunakan user ilkom_admin3 dari komputer dengan IP address selain '192.168.0.4', MySQL akan menghasilkan error.

D:\MySQL\bin>mysql -u ilkom_admin3 -pr4hasia
ERROR 1045 (28000): Access denied for user 'ilkom_admin3'@'localhost' 
(using password: YES)

MySQL juga memiliki fitur untuk membuat alamat IP menggunakan wildcard '%' yang maksudnya adalah semua alamat IP. Contohnya :

CREATE USER 'ilkom_admin4'@'192.168.0.%';

Perintah tersebut akan membuat user ilkom_admin4 dapat diakses dari seluruh alamat mulai dari 192.168.0.1 sampai dengan 192.168.0.255, namun tidak untuk IP 192.168.1.0.

Bahkan sebenarnya perintah:

CREATE USER 'ilkom_admin';

Adalah sama dengan

CREATE USER 'ilkom_admin'@%;

Yang berarti user ilkom_admin dapat diakses dari mana saja.

Alamat yang sering digunakan sebagai alamat IP adalah localhost, yang berarti alamat IP komputer tempat dimana MySQL Server berada. Karena di dalam tahap belajar ini kita menggunakan MySQL Client pada komputer yang sama dengan MySQL server, maka dalam tutorial selanjutnya saya hanya akan memakai lokasi localhost, seperti:

CREATE USER 'ilkom_admin'@'localhost';


Cara menghapus User MySQL

Untuk menghapus user, MySQL menyediakan query DROP USER. Berikut format dasar penggunaan:

DROP user nama_user
  • nama_user adalah nama dari user yang akan dihapus.

Sebagai contoh, jika anda mengikuti seluruh query dalam tutorial ini, maka akan tercipta 3 user, yakni ilkom_admin, ilkom_admin2 dan ilkom_admin3. Kita akan menghapus ketiganya:

mysql> DROP USER ilkom_admin;
Query OK, 0 rows affected (0.00 sec)

mysql> DROP USER ilkom_admin2;
Query OK, 0 rows affected (0.00 sec)

mysql> DROP USER ilkom_admin3; ERROR 1396 (HY000): 
Operation DROP USER failed for 'ilkom_admin3'@'%'

Untuk user ilkom_admin3, MySQL akan mengeluarkan pesan error. Hal ini dikarenakan pada saat kita membuat user ilkom_admin3, kita membatasi user ini dengan hanya bisa diakses dari IP 192.168.0.4, sehingga untuk menghapusnya harus mencantumkan alamat lengkap IP:

mysql> DROP USER 'ilkom_admin3'@'192.168.0.4';
Query OK, 0 rows affected (0.00 sec)

Sampai tahap ini kita sudah mempelajari cara membuat user MySQL, membatasinya dengan password dan alamat IP, serta menghapus user MySQL. Namun user tersebut belum bisa melakukan apa-apa, karena kita belum memberikan hak akses. Dalam tutorial selanjutnya, kita akan membahas cara memberikan hak akses dengan query GRANT.

26 Comments

  1. Aldi
    28 Nov 15
    • Andre
      29 Nov 15
  2. Khairul U
    02 Jan 16
    • Andre
      03 Jan 16
  3. reza
    19 Feb 16
    • Andre
      20 Feb 16
      • huhuhu
        01 Sep 17
      • huhuhu
        01 Sep 17
  4. Icksan Sonjaya
    04 Nov 16
    • Andre
      05 Nov 16
  5. nispul
    07 Jul 17
    • nispul
      07 Jul 17
      • Andre
        08 Jul 17
  6. nispul
    10 Jul 17
    • Andre
      12 Jul 17
  7. wahyu
    11 Aug 17
  8. BOT YUD
    03 Feb 18
    • BOT YUD
      03 Feb 18
    • Andre
      04 Feb 18
  9. BOT YUD
    05 Feb 18
    • BOT YUD
      05 Feb 18
  10. Gusman Pakaya
    24 Mar 18
  11. Rico
    04 Aug 18
    • Andre
      05 Aug 18
  12. Arif Julkarnaen
    25 Sep 18
    • Andre
      27 Sep 18

Add Comment