[Tips] Reset/Ganti Password Root MySQL

Anda pernah merasa kehilangan password root MySQL? Hilang password root MySQL akan sangat mengganggu terutama bagi para administrator server database MySQL. Namun tahukah anda bahwa password Root MySQL itu bisa diubah? Ya, tentu saja bisa. Sebelum mengubah, mari kita pelajari struktur MySQL terutama berkaitan dengan password user MySQL.

Database MySQL

MySQL adalah database server yang memiliki fungsi sebagai penyimpanan dan pengolahan database. Database sendiri adalah penyimpan informasi yang terdiri dari tabel-tabel, dimana tabel-tabel tersebut terdiri dari kolom-kolom. Sedang isiannya secara berurut akan masuk dalam record yang terisi dalam bentuk baris. Dalam MySQL Server, selalu terdapat database MySQL, yang berfungsi menyimpan informasi dan beberapa setting konfigurasi server MySQL. Bila kita berada dalam console MySQL tentu dapat dilihat dengan cara seperti ini :

mysql> show databases like 'mysql';
+------------------+
| Database (mysql) |
+------------------+
| mysql            |
+------------------+
1 row in set (0.00 sec)

mysql>

Atau bisa juga kita lihat di SQL Browser baik dari PhpMyAdmin ataupun aplikasi berbentuk desktop seperti Navicat, SQLYog, MySQLFront.

Salah satu tabel dalam database mysql adalah tabel user.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables like '%user%';
+--------------------------+
| Tables_in_mysql (%user%) |
+--------------------------+
| user                     |
+--------------------------+
1 row in set (0.00 sec)

mysql>;

Di dalam tabel user terdapat banyak sekali kolom. Untuk kasus kita, hanya perlu kita perhatikan kolom / field : user, password, host.

mysql> select user, password, host from user;
+------------------+-------------------------------------------+-------------+
| user             | password                                  | host        |
+------------------+-------------------------------------------+-------------+
| root             | *993AD4A55C1D20F9ADD51702ED4157941D464395 | localhost   |
| root             | *993AD4A55C1D20F9ADD51702ED4157941D464395 | bimo-laptop |
| root             | *993AD4A55C1D20F9ADD51702ED4157941D464395 | 127.0.0.1   |
+------------------+-------------------------------------------+-------------+

Dalam tabel tersebut, dapat kita lihat susunan passwordnya tersimpan dalam bentuk enkripsi. Untuk memastikan bentuk enkripsinya, kemungkinan dalam MySQL adalah jika bukan password() ya old_password(). Pastikan dengan cara ini :

mysql> select password('test');
+-------------------------------------------+
| password('test')                          |
+-------------------------------------------+
| *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> select old_password('test');
+----------------------+
| old_password('test') |
+----------------------+
| 378b243e220ca493     |
+----------------------+
1 row in set (0.00 sec)

Dengan demikian kita tahu password dienkripsi dengan enkripsi password(). Untuk mengubah password bisa dilakukan dengan update langsung, dan khusus untuk urusan grant user ini harus dilanjutkan dengan perintah flush privileges;

mysql> UPDATE `user` SET `password`=password('passwordbaru') WHERE `user`='root';

mysql>flush privileges;

 

Maka ketika anda masuk, password ini telah berganti. Tapi memang untuk melakukan ini memang harus ROOT . Jika kita kehilangan password root, tentu tidak dapat melakukan perintah ini. Jangan cemas. Matikan MySQL Server anda, kemudian hidupkan dalam mode –skip-grant-tables. Maka ketika anda masuk console MySQL tanpa password pun akan dapat sebagai root. Lho perintahnya??

Untuk Linux, matikan server linux anda:

root@wedhus#/etc/init.d/mysql stop

atau

root@wedhus# /etc/init.d/mysql.server stop

atau

root@wedhus#/etc/rc.d/rc.mysqld stop

user@wedhus#sudo /etc/init.d/mysql stop

tergantung anda menggunakan jenis linux apa. Atau juga

root@wedhus#killall -9 mysqld_safe

root@wedhus#killall -9 safe_mysqld

 

Selanjutnya hidupkan dalam mode –skip-grant-privileges. Pastikan dulu path mysql server anda.

#root@wedhus#which mysqld_safe

/usr/bin/mysqld_safe

 

Jika sudah pasti, tinggal ketik :

nohup /usr/bin/mysqld_safe --skip-grant-tables &;

 

Selanjutnya anda bisa masuk ke mysql seperti biasa tanpa password dalam mode root mysql.

 

 

WINDOWS

Lho bagaimana dengan windows? Wah maaf saya tidak begitu familiar, tapi kira kira seperti berikut. Matikan Server Xampp, Wamp atau apapun yang mengkontrol MySQL Server anda.

Selanjutnya bukalah command prompt, dengan Start -> Run -> Cmd

Menujulah ke direktori MySQL

C:\ cd blablabla\xampp\mysql\bin>;

Hidupkan dengan –skip-grant-tables

C:\ cd blablabla\xampp\mysql\bin>mysqld --skip-grant-tables

atau

C:\ cd blablabla\xampp\mysql\bin>mysqld-nt --skip-grant-tables

 

Segera ubah password root anda. Jangan terlalu lama membiarkan mode –skip-grant-tables ini, karena ini adalah kondisi paling tidak aman, dimana seluruh port terbuka untuk root dan dapat melakukan administrasi apapun dalam mysql tanpa password. Setelah itu, matikan mysql, hidupkan seperti biasa.

4 thoughts on “[Tips] Reset/Ganti Password Root MySQL

    1. Tidak. Database adalah ilmu teknis, ada pendekatan tertentu untuk mempelajarinya. Karena ilmu teknis, bisa dipelajari.

      Intinya, database itu hanya penyimpan database dalam bentuk kumpulan tabel. Tiap tabel terdiri dari field / kolom, dan isiannya disebut record dalam bentuk row / baris.

      SQL adalah, standar bahasa operasional database 🙂

      Fahami kata diatas itu, dan segera buka mysql. Tools nya banyak, kalau sulit bisa menggunakan aplikasi SQLYog, atau PHPMyADMIN

Leave a Reply to Drew Cancel reply

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