User root merupakan superuser yang memiliki hak akses paling tinggi dalam sistem manajemen user MySQL. Jika user ‘biasa’ mengalami masalah, user rootdapat mereset kembali password user tersebut dari sistemnya. Namun jika yang lupa password adalah user root itu sendiri, user lain tidak dapat meresetnya.
Terdapat beberapa cara untuk mengembalikan password user root. Pada tutorial MySQL kali ini saya akan menjelaskan 2 cara diantaranya. Cara pertama yaitu dengan menjalankan MySQL dengan opsi skip-grant-tables dan cara kedua, menjalankan MySQL dengan opsi init-file. Kedua opsi ini mengharuskan user dapat mengakses folder sistem tempat file MySQL berada.
Dalam tutorial ini saya akan mencoba mereset password user root MySQL dengan menggunakan sistem Operasi Windows 7. Untuk sistem operasi windows lainnya, cara yang dibutuhkan kurang lebih akan mirip.
Reset Password root MySQL dengan Opsi skip-grant-tables
Cara pertama yang akan saya gunakan untuk mereset user root MySQL adalah dengan menjalankan MySQL Server tanpa sistem manajemen user sama sekali. Dengan cara ini, user root dapat masuk tanpa password.
MySQL menyimpan hak akses dan password user di dalam database mysql. Database ini menyimpan data-data tentang setingan MySQL, termasuk data tentang user, password dan hak aksesnya di dalam tabel mysql. Karena tabelmysql ini menyimpan tentang user dan hak aksesnya, maka disebut juga denganGrant Tabel.
Cara yang akan kita lakukan adalah menjalankan MySQL Server tanpa menggunakan database mysql ini. Yang berarti MySQL Server tidak dapat memeriksa setiap user, dan setiap user yang log in akan memiliki akses root!.
Langkah pertama untuk mereset password user root adalah menghentikanMySQL Server apabila masih berjalan. Seperti yang kita pelajari pada Menjalankan MySQL Server, terdapat beberapa cara untuk menghentikan MySQL Server.
Cara paling cepat mematikan MySQL Server adalah dari menu task manager, pilih tab Procesess, cari mysqld.exe, klik kanan dan pilih menu end process.
Selanjutnya kita akan menjalankan kembali MySQL Server (menggunakanmysqld), namun dengan perintah tambahan skip-grant-tables. Buka lokasi file mysqld melalui cmd, lalu jalankan perintah :
Berikut adalah tampilan cmd windows:
Untuk memeriksa apakah MySQL Server telah berjalan, dapat dilihat dari task manager, pilih tab Procesess, dan jika ada mysqld.exe, berarti MySQL Server telah berjalan.
Saat ini MySQL Server telah berjalan dengan opsi skip-grant-tables, sehingga kita dapat masuk sebagai root tanpa password:
![Masuk sebagai root dengan opsi skip-grant-tables](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vR-L7cCxjpN5SeyPmPoF84e8q5E8OpVNFf3QIynhuIoY9dbas5kQVrjdNAyUmE8hE744NPX25LFekzqIEcy_ZTVVuHCDOZqtqLzgxoA4Nq5VyBG2xXpMjJ3vOu9zbYRKqw2A4ZVdNUqDAKgGDToFnbGDU7NPm9dWi_rkCfhKjtf5Hq9u0nsisWOWpO7hY=s0-d)
Segera setelah masuk sebagi
root, langsung jalankan perintah untuk membuat password untuk user
root. Karena kita masuk dengan opsi skip-
grant-tables, maka kita tidak bisa menjalankan cara membuat password seperti tutorial Cara Merubah dan Menghapus Password User MySQL, namun harus secara manual mengupdate tabel
user pada database
mysql.
Berikut query yang digunakan untuk update password root:
UPDATE mysql. user SET Password = PASSWORD ( 'password_baru' ) WHERE User = 'root' ;
|
Perintah tersebut adalah query UPDATE yang biasa kita gunakan untuk mengupdate sebuah record atau baris, namun yang diupdate kali ini adalah tabeluser pada database mysql.
Setelah perintah tersebut dijalankan, untuk merefresh tabel user, jalankan query:
Perintah FLUSH PRIVILEGES digunakan untuk membuat MySQL Servermengupdate hak akses di tabel user. Lalu keluarlah dari MySQL.
Berikut query yang saya gunakan untuk mereset password root menjadi ‘123456’:
1
2
3
4
5
6
7
8
9
|
mysql> UPDATE mysql. user SET Password = PASSWORD ( '123456' ) WHERE User = 'root' ;
Query OK, 1 row affected (0.20 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> FLUSH PRIVILEGES ;
Query OK, 0 rows affected (0.42 sec)
mysql> exit;
Bye
|
Setelah keluar dari MySQL Client, hentikan MySQL Server dari task manager dan jalankan MySQL Server seperti biasa.
Karena opsi ini mengizinkan user root masuk tanpa password, sebaiknya anda memutuskan jaringan server terlebih dahulu agar tidak ada user lain yang masuk selama kita mereset password root. Bahkan selama opsi skip-grant-option, setiap user yang masuk akan memiliki hak akses sebagai root, walaupun user tersebut tidak terdaftar sebelumnya.
Reset Password root MySQL dengan Opsi init-file
Cara kedua untuk mereset password user root MySQL adalah dengan menggunakan opsi init-file.
Opsi init-file digunakan untuk memerintahkan MySQL Server menjalankansebuah file pada saat Server pertama kali dijalankan. Dan kita akan memanfaatkan fitur ini untuk mereset password root MySQL
Sebagai langkah pertama, kita akan membuat sebuah file text yang berisi perintah query MySQL untuk mereset password. Isi dari file text tersebut adalah:
SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ( 'password_baru' );
|
Sebagai contoh, saya akan mereset password root menjadi ‘123456’, sehingga perintahnya adalah:
SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ( '123456' );
|
Savelah file ini sebagai ‘reset_password.sql’. Anda bisa menggunakan programnotepad bawaan windows untuk menulisnya, namun pastikan akhiran dari file adalah ‘.sql’. Savelah file ini di lokasi yang bisa diakses MySQL, untuk contoh kali ini saya akan meletakkannya di dalam folder bin MySQL.
![File reset_password di folder bin MySQL](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_u28cS27jC_IRWuBmmwOCynnzTxn5Xyttw-fXUsj3LwimF7s3s_1J2HRtrVFVZ69hlJWH87Oee18AgGTzv1j-s01RCpBYWUUmCDUGemsQlbAEVW5USe7fvaHaQX-tOqQDTXzmCG_lU2OZUdWnuYU_NqCYdAT1ncPzogcWts6VKdlFfC=s0-d)
Selanjutnya, hentikan
MySQL Server jika masih berjalan. Lalu jalankan kembali
MySQL Server, namun kali ini dengan opsi
init-file=’lokasi_file_reset_password.sql’.
Karena saya menyimpan file reset_password di drive D:\MySQL\bin, maka lokasi_file_reset_password.sql adalah di “D:\MySQL\bin\reset_password.sql”. Berikut perintah untuk menjalankan MySQL Server dengan opsi init-file:
![Menjalankan MySQL Server dengan opsi init-file](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vCKPGs8ZM7JDI4Ecs-OoKPThTAHFC1OtHN2Uvw4nv3OJgT8rS8IM9Kflbne_52xt3uWmaCGYlu7BYEzK5gFvZ30iL1J2fZczZ1_Jk4txU1QKKQ4-2sUE8EyFtiQOuFL3t4kyPEl00lJxRBKJ3SxAKhYbk1xhQjsGRll1ZBrbfjyzM-hxM92cKxtB8=s0-d)
MySQL Server akan menjalankan file ‘
reset_password.sql’ tersebut dan mereset password user root menjadi ‘123456’.
Untuk mencoba password root yang baru saja di reset, masuklah sebagai user root dengan password ‘123456’.
Jika anda berhasil masuk sebagai root, berarti reset password berhasil dijalankan.
![Masuk sebagai root dengan opsi init-file](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_t59BQWFRtN8jcPOmRUDGYEXI4Jl-EY3HpEzieFeWXo77yKdXIRFOINcBgKZlWexm-3fK3chjO21nh55Q8OC3FmKQ8Hn11q5OLm2qW7N0XRKulVECuoplkgvkQba91U5_yo_I6Up2KXvPdlVxNMFFdyQm-ccwAfF_6lCzHThO4NnJpO9VA=s0-d)
Sebagai langkah terakhir, hentikan
MySQL Server dan hapus file
reset_password.sql.
Pada tutorial MySQL kali ini kita telah membahas cara mereset dan mengembalikan password MySQL jika ternyata user root lupa password untuk login. Tutorial ini juga sebagai sesi terakhir dalam pembahasan user dan hak askes MySQL, untuk tutorial MySQL selanjutnya saya akan membahas query-query lanjutan untuk keperluan-keperluan khusus dalam MySQL.