Seperti yang telah kita bahas pada tutorial Pengertian Fungsi Hashing dan Cara Kerja Password MySQL, MySQL menyimpan password user sebagai 'kata' yang terdiri dari 41 karakter acak yang berasal dari hashing fungsi PASSWORD. Dalam tutorial kali ini saya akan membahas Cara Untuk Merubah dan Menghapus Password user MySQL.
Password asli dari user MySQL tidak dapat diketahui dari tabel mysql, bahkan melalui user root sekalipun. Hal ini berguna seandainya ada pihak yang tidak berhak masuk ke dalam sistem dan melihat-lihat password user, namun juga menjadi masalah ketika ada user yang lupa dengan password yang digunakan.
Cara Merubah Password User MySQL dari User Root
Jika user yang 'lupa' passwordnya bukan user root, maka kita tinggal menimpa password lama dengan yang baru. Berikut adalah format dasar query yang digunakan:
SET PASSWORD FOR nama_user@'lokasi_user' = PASSWORD('password_baru');
- nama_user adalah nama dari user yang akan diubah passwordnya.
- lokasi_user adalah alamat IP dari user yang akan diubah passwordnya.
- password_baru adalah password yang akan diberikan kepada nama_user.
Perhatikan bahwa kita menggunakan fungsi PASSWORD untuk membuat password baru.
Sebagai contoh, saya akan merubah password ilkom_admin menjadi 's3cret'. Berikut query yang digunakan:
D:\MySQL\bin>mysql -uroot -pqwerty Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 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 GRANTS FOR ilkom_admin@localhost \G *************************** 1. row *************************** Grants for ilkom_admin@localhost: GRANT USAGE ON *.* TO 'ilkom_admin'@'localhost' IDENTIFIED BY PASSWORD '*7438236BE048F242AA18D2EE074296F078CD701A' *************************** 2. row *************************** Grants for ilkom_admin@localhost: GRANT SELECT ON `universitas`.`mahasiswa_ilkom` TO 'ilkom_admin'@'localhost' 2 rows in set (0.07 sec) mysql> SET PASSWORD FOR ilkom_admin@'localhost' = PASSWORD('s3cret'); Query OK, 0 rows affected (0.00 sec) mysql> SHOW GRANTS FOR ilkom_admin@localhost \G *************************** 1. row *************************** Grants for ilkom_admin@localhost: GRANT USAGE ON *.* TO 'ilkom_admin'@'localhost' IDENTIFIED BY PASSWORD '*B865CAE8F340F6CE1485A06F4492BB49718DF1EC' *************************** 2. row *************************** Grants for ilkom_admin@localhost: GRANT SELECT ON `universitas`.`mahasiswa_ilkom` TO 'ilkom_admin'@'localhost' 2 rows in set (0.00 sec)
Setelah masuk sebagai root (baris…), saya memeriksa terlebih dahulu user ilkom_admin dengan query SHOW GRANTS FOR (baris …). Pada baris…, terdapat hasil hashing dari password 'r4hasia' yang saya gunakan sebagai password pada waktu membuat user ilkom_admin. Hasil hashing inilah yang disimpan MySQL di dalam databasenya.
Pada baris ke… saya merubah password ilkom_admin menjadi 's3cret'. Lalu pada baris.. saya kembali memeriksa hasil hashing password dengan SHOW GRANTS FOR . Dan seperti yang terlihat, hasil hashing juga telah berubah yang menandakan pergantian password berhasil.
Cara Merubah Password User MySQL dari User itu Sendiri
Untuk merubah password dari user yang kita login saat ini, bisa menggunakan perintah yang lebih sederhana:
SET PASSWORD=PASSWORD('the_password')
Berikut adalah contoh query dimana saya login sebagai ilkom_admin dengan password 's3cret' dan mengubahnya menjadi '4dmin':
D:\MySQL\bin>mysql -uilkom_admin -ps3cret Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 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> SET PASSWORD = PASSWORD('4dmin'); Query OK, 0 rows affected (0.00 sec)
Password baru tersebut akan aktif setelah user keluar dari sesi MySQL saat ini.
Cara Menghapus Password User MySQL
Jika yang anda inginkan adalah menghapus password dari seorang user secara keseluruhan, maka cukup memberikan string kosong sebagai isian password.
SET PASSWORD FOR 'nama_user'@'lokasi_user' = ''
Berikut saya contohkan ketika menghapus password untuk user ekonomi_admin melalui user root:
D:\MySQL\bin>mysql -uroot -pqwerty 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> SET PASSWORD FOR ekonomi_admin@'localhost' = ''; Query OK, 0 rows affected (0.00 sec) mysql> SHOW GRANTS FOR ekonomi_admin@localhost \G *************************** 1. row *************************** Grants for ekonomi_admin@localhost: GRANT USAGE ON *.* TO 'ekonomi_admin'@'localhost' *************************** 2. row *************************** Grants for ekonomi_admin@localhost: GRANT ALL PRIVILEGES ON `universitas`.`mahasiswa_ekonomi` TO 'ekonomi_admin'@'localhost' 2 rows in set (0.00 sec)
Terlihat dari hasil SHOW GRANTS FOR, user ekonomi_admin tidak memiliki password, dan user tersebut dapat masuk kedalam MySQL tanpa password sama sekali.
Cara Membuat Password User MySQL, Sama Dengan User Lain
Walaupun anda tidak tahu password asli yang digunakan oleh user lain, namun jika yang diinginkan adalah membuat password yang sama dengan user lain, kita dapat menggunakan hasil hashing dari password user tersebut.
Berikut adalah format dasarnya:
SET PASSWORD FOR 'nama_user'@'lokasi_user' ='*nilai hashing';
- nama_user adalah nama dari user yang akan diubah passwordnya.
- lokasi_user adalah alamat IP dari user yang akan diubah passwordnya.
- nilai_hashing adalah nilai dari fungsi hashing password user yang akan disamakan passwordnya.
Dari hasil SHOW GRANTS FOR untuk user ilkom_admin, saya mendapati hasil hashingnya adalah '*F366568C1E05004FD78F38B712C83917196C95D8', dan nilai inilah yang akan saya pakai untuk password user ekonomi_admin. Berikut query yang digunakan (dari user root):
mysql> SET PASSWORD FOR ekonomi_admin@'localhost' = '*F366568C1E05004FD78F38B712C83917196C95D8'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye D:\MySQL\bin>mysql -uekonomi_admin -p4dmin Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 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.
Karena user ilkom_admin baru saya ganti passwordnya menjadi 4dmin, maka dengan men-copy hasil hashing user ilkom_admin ke user ekonomi_admin, keduanya memiliki password yang sama, yaitu s3cret.
Pada tutorial kali ini kita telah membahas cara merubah dan menghapus user MySQL dari user root. Hal ini berguna jika ada user yang lupa password atau ingin merubah password.
Namun bagaimana jika user root lah yang lupa passwordnya? Kita akan membahasnya pada tutorial berikutnya: Lupa password root MySQL.
terimakasih mas. sangat amat membantu. akhirnya ane bsa masuk ke phpmyadmin
Sama2 gan.. :)
Permisi min kok kolom password waktu select user ga ada ya di mysql saya, mohon pencerahan
Untuk menampilkan password semua USER, pertama-tama masuklah ke MySQL sebagai root. Lalu pilih database mysql.
mysql>use mysql;
Kemudian gunakan query SELECT pada tabel user untuk menampilkan password setiap user.
mysql>SELECT user, host, password FROM user;
untuk mysql versi 5.7 ke atas, kolom password diganti jadi authentication_string
Assalamu'alaikum om. Mw tny cara kerja'a reset password user pada sistem web based ky gmn ya?
Contoh'a ktika user lupa password'a, dy masukin email. Trus ada link yg masuk k email user tsb. Ktika klik link tsb, lgs dsuruh bikin password baru. Nah ktika user tsb m'buka link tu apakah pasword'a sudah dikosongin oleh sistem? Ato gmn kah cara kerja'a?
Terimakasih, wassalamu'alaikum
Kalau dijelaskan semua bisa 1 buku gan :)
Singkatnya pada saat si user masuk ke form untuk reset password, biasanya diminta alamat email lama. Ketika form ini disubmit, kita siapkan kode program yang mencari alamat email tersebut di database. Kalau ada, kirim sebuah email beserta link khusus untuk reset password.
Link khusus ini biasanya berisi kode2 tertentu, kalau di PHP ada istilah query string, misalnya reset.php?id=24234234. Di halaman reset.php kita bisa ambil bagian "id" dari query string, kemudian jalankan program PHP untuk menghapus password username tersebut. Selanjutnya user tinggal buat password baru.
Kode program untuk semua fitur ini bisa ratusan atau ribuan baris, hehe…
Gpp klo 1 buku karya om Andre sy baca dh ????
B'arti pk method GET ya om?
Ow jd wkt si user m'buka link tsb, ngejalanin fungsi reset password/ngosongin password? Nah klo user tsb gk jd ngisi password baru, org lain bisa masuk pk username dy dgn password kosong dong?
Gpp om masalah coding nanti sy buat sndiri. Sy lg butuh pencerahan alur logika'a program.
Orang lain itu kan g tau alamat lengkapnya gan.. Misalnya tadi reset.php?id=24234234, Yang tau alamat lengkap ini hanya si user yang besangkutan (karena kita kirim lewat email). Kalau ada yang nyoba pakai reset.php?id=1111111, sistem akan menolak.
Juga link reset.php?id=24234234 bisa kita proteksi lagi misalnya hanya aktif selama 1 jam. Jika lewat dari 1 jam dan g digunakan, prosedur reset g bisa jalan. Si user tadi mesti minta link lagi.
Untuk prakteknya kita bisa buat sebuah tabel "reset" di database. Isinya link id reset, id asli user, dan waktu pembuatan. Halaman reset.php mesti ngelihat dulu apakah di tabel "reset" ada link yang sesuai. Jika ada, kapan waktu buatnya.. Jika keduanya valid (link dan waktu), baru reset bisa dijalankan. Jika linknya valid tapi waktunya sudah lewat, reset g bisa dijalankan.
Hmmm…jd hrs pk tabel lg. Oke paham.
Mksud ptnyaan sy sblm'a, misal User 1 mlakukan reset dgn membuka link yg dikirim ke email. Nah klo yg sy tangkap dr komen om Andre sbelum'a, b'arti ktika User 1 membuka link tsb, kn password User 1 udah kosong tuh dgn kondisi dy blm membuat password baru. Bkn bgtu om? Nah ptnyaan sy, ada User 2 yg mngetahui username User 1 dan dy bisa dong login m'gunakan username User 1 + password kosong? Dgn catatan User 2 lebih cepat ato sblm User 1 membuat password baru.
Penghapusan password lama bisa kita proses pada saat user tersebut submit password baru. Link tadi hanya untuk masuk ke form perubahan password, namun belum dilakukan penghapusan password.
Barulah saat form perubahan password diisi dan disubmit, password lama kita hapus dan input password baru (yang dari user).
Oke om trimakasih bnyk ats p'cerahan'a yg sangat persuasif.
Btw, klo jasa bikin web kira2 dihargain brp y om klo independent sy sndiri yg develop? Misal web shopping cart dan web inventori gtu?
Coba lihat jasa2 yang mirip gan (pesaing kita). Mereka nawarkan di harga berapa, bisa disamakan saja. Juga lihat2 apakah web kita lebih bagus g? kalau iya bisa dikasih harga lebih tinggi.
Fitur web yang bisa dipesan juga lebih mahal daripada web yang berbentuk template yang sudah jadi. Kalau berbentuk template, si user hanya bisa ubah2 dikit dari sisi tampilan.
Buat My SQL 5.7 untuk rubah passwordny gak perlu pakai kata password di belakang tanda sama dengan, trus tanda tutup kurung nya gak d pakai lagi ni,,mas.. query nya jdi gini,mas.. SET PASSWORD FOR ilkom_admin@localhost = 'secr3t';
Terimakasih tambahannya :)
Saat mencoba SHOW GRANTS FOR …. di komputerku mysql tidak menampilkan password(hashing).
Mengapa?
Bisa jadi karena user tersebut memang tidak memiliki password, biasanya ini untuk MySQL bawaan XAMPP dimana user root passwordnya tidak di set.