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.