Cara Reset Password Root mysql dengan Docker Container

Kali ini dapat tugas untuk merestore aplikasi web berbasis WordPress yang sangat jadul, tidak diketahui menggunakan versi berapa database-nya.

  • Root passwordnya tidak diketahui
  • yang tersedia dari backup-nya adalah direktori /var/lib/mysql
  • lokasi backup ada di /home/situs/backup/mysql
  • karena versi MySQL tidak diketahui, saya asumsikan menggunakan versi 5.6

Nah, untuk melakukan reset password root, kita perlu siapkan sebuah file sql

reset-password.sql
USE mysql;
UPDATE USER SET Password=PASSWORD('rahasia') WHERE USER='root';
FLUSH PRIVILEGES;
untuk MySQL 5.7 ke atas, ubah Password (setelah klausa SET) menjadi authentication_string
Ganti rahasia dengan password yang lebih bagus

Jalankan container mysql dengan perintah berikut:

docker run -ti --name test-mysql -v /home/situs/backup/mysql:/var/lib/mysql -v `pwd`/reset-password.sql:/docker-entrypoint-initdb.d/reset-password.sql mysql:5.6 bash

Perintah tersebut akan menjalankan container test-mysql tanpa menjalankan mysql server, perhatikan perintah bash di akhir baris yang meng-override entrypoint container mysql. Setelah kontainer menyala, jalankan mysql secara manual dengan perintah mysqld_safe –init-file=/docker-entrypoint-initdb.d/reset-password.sql seperti di bawah ini:

root@dfe726e2b96b:/# 
root@dfe726e2b96b:/# ls docker-entrypoint-initdb.d/                                                                                                                                                                                                                            
reset-password.sql                                                                                                                                                                                                                                                             
root@dfe726e2b96b:/# mysqld_safe --init-file=/docker-entrypoint-initdb.d/reset-password.sql                                                                                                                                                                                    
Logging to '/var/lib/mysql/dfe726e2b96b.err'.                                                                                                                                                                                                                                  
210123 14:38:20 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Buka terminal lain, lalu coba jalankan perintah berikut untuk masuk ke database shell-nya:

docker exec -it test-mysql sh -c 'exec mysql -uroot -prahasia'

Jika muncul prompt mysql> maka sudah berhasil melakukan reset password. Keluar dari prompt tersebut dengan mengetikkan \q dan exit.

Langkah berikutnya adalah melalukan dump database dengan perintah mysqldump seperti berikut:

docker exec -it test-mysql sh -c 'exec mysqldump -uroot -prahasia wpdatabase' > /home/situs/backup/wpdatabase.sql

File backup database akan tersimpan di /home/situs/backup/wpdatabase.sql dan siap digunakan untuk langkah berikutnya, deploy ulang website dengan stack yang lebih baru.

Sekian, dan terima kasih sudah membaca catatan saya.

  • linux/Cara.Reset.Password.Root.mysql.dengan.Docker.Container
  • Terakhir diubah: 4 bulan yang lalu
  • oleh Samsul Maarif