Mengganti Password User di MySQL (Another Trick Anyway)

Tulisan yang basi bagi yang sudah biasa install dan setup MySQL di komputer ya? Sama dengan saya.. Haha.. tapi masalah sedikit lain (bagi saya). Soalnya baru kali ini ganti password MySQL seperti ini.. Ya.. biasanya kita kan tinggal mengetikkan perintah:

$ mysqladmin -u <username> -h <hostname.blah.org> -p password <'new-password'>

Tetapi ketika melakukan itu, saya mendapatkan pesan error:

mysqladmin: Can’t turn off logging; error: ‘Access denied; you need the SUPER privilege for this operation’

Ada lagi sih cara lain, yang pake akun root, untuk edit isi tabel ‘mysql’ itu loh..

mysql> use mysql;
mysql> update user set password=PASSWORD("new-password") where user='inan19x';
mysql> flush privileges;
mysql> quit

Wah.. masalahnya, saya lagi di PC orang yang ga tau password user ‘root’ MySQLnya. Masa harus nge-hack password user ‘root’-nya =P.

Anyway, saya akhirnya bisa mengubah password MySQL dengan perintah ini:

mysql> set password=password('newpassword');

Sebelumnya login dulu sebagai user MySQL kita itu dengan password lama. Sampai ada prompt ‘mysql>‘ Tinggal ketikkan deh perintah di atas… Dari pesan errornya, sepertinya selain mengubah password, MySQL sebelumnya melakukan ‘sesuatu’… yaitu ingin mematikan logging.. SQL_LOG_OFF (perhatikan pesan error mysqladmin di atas). Oh iya catatan.. ini adalah kasus ganti password user, bukan reset password atau buat password user yang sebelumnya belum ada (kosong)..

Recovery Password MySQL Yang Lupa?

Lantas bagaimana caranya jika kita lupa password dan ingin masuk ke database? Berikut ini caranya. Intinya adalah kita masuk ke service MySQL yang tidak akan melakukan proses autentikasi untuk masuk ke databasenya. Sehingga langkah-langkah yang harus dilakukan adalah:

  • Kill process daemon mysql/mysqld sepenuhnya. Pastikan service MySQL benar-benar stop dan tidak listening lagi dan port telah closed. Bisa dipastikan dengan nmap atau netstat di host lokal tsb.
  • Jalankan mysqld_safe, sebuah program “safemode” untuk mysql. Jangan lupa tambahkan embel-embel –skip-grant-tables agar service ini nantinya mengijinkan siapa saja mengakses database. Jadi command lengkapnya: mysqld_safe –skip-grant-tables & (NB: penambahan “&” agar program berjalan dibelakang layar sehingga prompt user muncul kembali).
  • Nah, dari sini tinggal masuk ke database deh. Seharusnya tidak ada autentikasi ketika masuk ke database. User apapaun bahkan yang tidak terdaftar bisa masuk ke database. Lakukan perubahan pada table “user” seperti cara yang sudah ditulis di bagian atas blog ini:
    mysql> use mysql;
    mysql> update user set password=PASSWORD("janganlupalagi") where user='inan19x';
    mysql> flush privileges;
    mysql> quit
  • Udah deh.. sekarang password MySQL untuk user ‘inan19x’ adalah ‘janganlupalagi’ :P. Silakan ganti password buat user root juga kalau perlu.
  • Terakhir dan sering dilupakan adalah: KEMBALIKAN KE SERVICE MYSQL AWAL TANPA MYSQLD_SAFE –skip-grant-tables!! Kenapa? Tidak usah dijelasin ya kenapa nya, cuma maling polos yang tidak mengeri 😀
  • Kill process daemon mysqld_safe tersebut sepenuhnya. Pastikan servicenya benar-benar stop dan tidak listening lagi dan port telah closed. Bisa dipastikan dengan nmap atau netstat di host lokal tsb.
  • Jalankan mysql biasa dan login lah dengan password baru. Semoga gak lupa password lagi ya! 😀

Leave a Reply

Your email address will not be published. Required fields are marked *