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).
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.
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.
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:
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)
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.
terima kasih, blog-nya keren sekali! semoga ilmu kita semakin bertambah, aamiin.
Amiin… terimakasih mas :)
Min mau nanya , selama ini ane ngikutin tutorial sampe part 28 pake mysql front, nah jadi bingung pas sampe tutorial part 30 ini buat user nya gimana ya , kalo pake mysql server kan ada dos nya kalo mysql front gaada .. jadi gimana ya min ? makasih min
Saya malah belum pernah pakai MySQL Front, hehe.. Coba dicari apakah ada kolom untuk input kode query SQL secara manual. Nanti bisa diinput dari situ.
min kenapa pas masukin password malah eror gini min
D:\MySQL\MySQL Server 5.7\bin>mysql -u ilkom_admin2 -prahasia;
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'ilkom_admin2'@'localhost' (using password
: YES)
Kalau errornya "Access denied", berarti ada yang salah dengan username dan passwordnya gan, mungkin dipastikan lagi passwordnya sudah benar atau belum..
udah bener min password nya, cuman masih kayak gini. masuk user root lancar setelah exit terus masuk user ilkom_admin malah eror kayak gini.
sekedar share min, ternyata saya lihat di daftar user di mysql saya ada 3 root, tapi beda host. Host nya adalah localhost,::1, dan 127.0.0.1. nah tadi kan saya gak bisa. setelah saya buat lagi user dengan nama admin di root yang host nya localhost, saya keluar dan masuk kembali dengan syntak
mysql -h local host -u root -pqwerty //masuk sebagai user root
create user 'admin';
exit; //keluar dari user root
mysql -h localhost -u admin //masuk sebagai user admin
dan hasilnya bisa masuk.
Maaf mau tanya min
untuk menghapus user dengan lokasi localhost caranya sama atau beda
Saya coba dengan drop user '…'@'localhost'; koq muncul eror terus.
mohon pencerahannya
Itu usernya memang titik2 y gan? drop user '…'@'localhost', saya juga kurang tau apa bisa membuat user seperti ini.
Silahkan buat user baru seperti yang ada di tutorial ini, lalu hapus kembali.
gan mau tanya
yang agan jelaskan diatas kalo tidak salah mengkoneksikan database pada jaringan LAN kan?
lalu bagaimana cara mengkoneksikan jaringan WAN, MAN, Atau lewat internet??
makasi gan mohon dijawab..
maksudnya mengkoneksikan database pada jaringan wan,man atau internet
Kalau ingin database bisa diakses dari internet, harus sewa web hosting dulu. Sedangkan kalau untuk LAN, sudah bisa langsung akses selama sudah terhubung ke jaringan LAN nya.
terimakasih atas jawabannya gan,
trus kalo boleh tanya lagi, bagaimana caranya kita mengkoneksikannya ke delphi 7
database dari web hosting -> delphi7?
terimakasih
Oh, kalau ke Delphi saya belum pengalaman juga nih. Biasanya web hosting itu hanya untuk website…
Atau coba cari materi tentang cara menghubungkan Delphi dengan MySQL, biasanya ada isian alamat IP, ini nanti diisi dengan alamat IP server MySQLnya (di dapat dari web hosting).
mas kalau untuk melihat seluruh nama nama user yang telat dibuat, ada query nya engga ?
min, ane kan make shell mysql dari xampp. misal kan udah dibikin user yang cuma bisa ngakses dari ip 10.44.7.1 misalnya, nah si 10.44.7.1 ini ngaksesnya gimana ? apakah harus lewat xampp juga ? ato lewat web browser ? gimana caranya min ?
soalnya pas ane coba kasih grant select ke komputer dengan ip 10..44.7.110 trus ane akses lewat komputer tersebut (ane tetep idupin apache sama mysql si 10.44.7.110), ane login kayak biasa (pake mysql -u uname) yang muncul cuma schema sama satu database 'test', ane coba kasih grant tabel lain ke 10.44.7.110, tetep nggak muncul min,
bantu min
pas ane coba dari komputer ane pake uname si 10.44.7.110, malah masuk min, kan harusnya dari 10.44.7.110 doang, apa karena ane localhost ?
Ini pakai MySQL bawaan XAMPP y?
Pertama, ada fitur yang sering buat pusing, yakni MySQL bawaan Xampp membolehkan user apapun masuk sebagai user anonym. User anonym ini hanya memang hanya bisa melihat database information_schema dan test. Efeknya kita bisa login dengan "mysql -u budi", meskipun user budi ini tidak didaftarkan sebelumnya.
Kedua, mungkin bisa dipahami dulu beda antara MySQL Server (mysqld.exe) dengan MySQL Client (mysql.exe):
https://www.duniailkom.com/tutorial-mysql-menjalankan-mysql-server/
https://www.duniailkom.com/tutorial-mysql-menjalankan-mysql-client/
Agar bisa mengakses database di komputer lain, kita hanya perlu MySQL Client, jadi tidak harus menjalankan XAMPP di komputer 10.44.7.110. Hanya perlu buka shell (MySQL Client).
Katakanlah servernya dijalankan di komputer 10.44.7.22. Lalu kita buat user "budi" yang hanya bisa diakses dari 10.44.7.110.
Dari komputer 10.44.7.110, cara loginnya adalah: "mysql -u budi -h 10.44.7.22". Juga pastikan koneksi kedua komputer lancar / tidak terhalang firewall atau anti virus. Cara mudahnya bisa di ping dulu antara kedua komputer.
ane dapet masalah lagi min,
ane buat user dengan nama john doe, ane coba cek dengan login dan show databases, yang muncul kan schema sama test
ane balik ke root, bikin db test2, kasih satu tabel namanya juga test2
nah, ane udah bikin grant all on john doe
tapi, pas ane balik ke john doe yang muncul tetep schema sama test doang min
satu lagi,pas ane buat user yang pake password, ane nggak bisa login pake tu user (udah ane sertain pw nya). Tapi pas login sama tu user tanpa nulis pw nya, malah berhasil min, mohon pencerahannya lagi min :)
sebelumnya makasih buat jawaban dari pertanyaan sebelumnya min
thanks informasi
Terima Kasih artikel nya sungguh membantu.
Tapi untuk sekedar masukan untuk bagian " CREATE USER ilkom_admin2 IDENTIFIED BY 'rahasi' " menurut saya harus nya ditulis " CREATE USER 'ILKOM_ADMIN2'@'localhost' IDENTIFIED BY 'rahasi' ", karena jika tanpa penambahan 'localhost' hasil nya tidak sama dengan yang mas admin sampaikan (mungkin juga karena mysql saya terdapat bug). Tanpa penambahan 'localhost' user ilkom_admin2 tetap dapat diakses walaupun tanpa menggunakan password dan ini sungguh berbeda dengan tampilan yang mas admin sampaikan seperti ini :
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>
karena hal tersebut pembelajaran saya menjadi stuck berjam-jam sampai akhirnya saya menemukan artikel optional dari pihak lain.
hanya itu saja menurut saya, mohon maaf kalo kekeliruan nya memang dari saya.
Terimah kasih
Mengenai user di MySQL / MariaDB memang terdapat 1 fitur yang sangat mengganggu, yakni kita bisa masuk dengan user apa saja (anonym user). Bisa test sendiri misalnya login dengan mysql -u andi. Besar kemungkinan tetap bisa login, meskipun kita belum membuat user andi.
Tapi user anonym ini tidak bisa mengakses database yang ada, hanya bisa sekedar login. Bisa test dengan menjalankan perintah SHOW DATABASES, yang terlihat hanya database default MySQL saja.
Gan, saya pakai MYSQL server 8.0 untuk server, dan di laptop lain saya pakai sqlyog untuk client,
saya punya kendala connect ke MySQL dari laptop lain, saya sudah buat account [email protected], tapi kenapa dari 88.219 ketika login pakai sql yog muncul error 2058 module could not be found. kenapa yah gan ?
Thanks, saya ikutin dari part 1 sampe sekarang udah part 30 :D
Saya juga belum pernah pakai sqlyog nih… Tapi bisa test login pakai mysql client di cmd saja dulu, untuk sekedar uji coba apakah bisa login atau tidak. Jika bisa berarti masalahnya ada di mysqlyog, tapi jika tidak bisa, berarti masalahnya ada di koneksi / jaringan.