Jika Anda belum pernah mengatur, lupa, atau perlu mengubah password MySQL, artikel ini akan memandu langkah demi langkah, sehingga tetap akan dapat mengakses database.
Kemungkinannya adalah Anda menjalankan MySQL di suatu tempat di data center. Jika itu masalahnya, mungkin suatu saat perlu mengatur atau mengubah password root. Ini dapat terjadi ketika lupa password atau ketika ingin meningkatkan level keamanan (mengingat Anda mengatur password awal MySQL ke sesuatu yang terlalu sederhana).
Proses ini ditangani sepenuhnya melalui command line dan berfungsi pada instalasi MySQL atau MariaDB. Distribusi Linux yang digunakan tidak menjadi masalah (selama memiliki akses admin, baik melalui su atau sudo).
Mengatur Password untuk Pertama Kalinya
Di sepanjang artikel ini, akan digunakan istilah MySQL, dengan asumsi bahwa semuanya akan berfungsi untuk MySQL dan MariaDB.
Biasanya, selama instalasi MySQL dan MariaDB, akan diminta untuk menetapkan password awal. Jika karena alasan apa pun itu tidak terjadi, Anda perlu mengatur password untuk pertama kalinya. Untuk melakukannya, buka jendela terminal dan jalankan perintah berikut:
mysqladmin -u root password NEW_PASSWORD
Dimana NEW_PASSWORD adalah password yang akan digunakan. Sekarang, ketika masuk ke MySQL, dengan perintah mysql -u root -p, akan diminta untuk memasukkan password yang baru dikonfigurasi.
Metode alternatif untuk mengatur password root untuk pertama kalinya, yang juga menambahkan keamanan ke database MySQL, adalah dengan menggunakan perintah mysql_secure_connection. Perintah ini tidak hanya akan mengatur password root, tetapi juga akan memungkinkan untuk menghapus pengguna anonim, melarang login root secara remote, dan menghapus database pengujian. Untuk menggunakan perintah ini, cukup ketik:
mysql_secure_connection
Nanti akan muncul beberapa pertanyaan dan password akan diset (serta database menjadi sedikit lebih aman).
Mengganti Password dengan init-file
Opsi init-file digunakan untuk menjalankan MySQL server dengan parameter sebuah file yang dapat dimanfaatkan untuk mereset password root MySQL.
Untuk mereset password MySQL terlebih dahulu buatlah file teks baru dengan isi sebagai berikut:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW_PASSWORD'
Dimana NEW_PASSWORD adalah password baru yang akan digunakan. Simpan file itu sebagai ~/mysql-pwd.
Selanjutnya, hentikan daemon MySQL dengan perintah:
systemctl stop mysql
Setelah daemon berhenti, jalankan perintah:
mysqld -init-file=~/mysql-pwd
Setelah command prompt muncul kembali, restart daemon MySQL dengan perintah:
systemctl start mysql
Sekarang seharusnya sudah dapat masuk ke command prompt MySQL dengan password root baru seperti:
mysql -u root -p
Saat diminta, ketik password root yang baru dibuat.
Reset Password dengan skip-grant-tables
Cara ini akan mengabaikan hak akses seluruh user yang ada di MySQL, jadi semuanya akan memiliki hak akses tertinggi (root). Karena itu sebaiknya seluruh program yang membutuhkan akses ke database (PHP, Apache, Nginx, dan lainnya) ikut dimatikan.
MySQL menyimpan hak akses dan password user di dalam database mysql. Database ini menyimpan setingan MySQL, termasuk data tentang user, password dan hak aksesnya di dalam tabel mysql. Karena tabel mysql ini menyimpan tentang user dan hak aksesnya, maka disebut juga dengan Grant Table.
Cara yang akan dilakukan adalah menjalankan MySQL server tanpa menggunakan database mysql, yang berarti MySQL Server tidak dapat memeriksa setiap user, dan setiap user yang login akan memiliki akses root.
Identifikasi Versi Server
Tergantung pada versi server MySQL atau MariaDB yang berjalan di sistem, diperlukan perintah yang berbeda untuk memulihkan password root.
Untuk mengetahui versi server jalankan perintah berikut:
mysql --version
Jika yang terpasang adalah MySQL, hasilnya akan terlihat seperti ini:
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
Atau keluaran seperti ini untuk MariaDB:
mysql Ver 15.1 Distrib 10.3.36-MariaDB, for Linux (x86_64) using readline 5.1
Pastikan untuk mencatat versi MySQL atau MariaDB yang terpasang.
Ikuti langkah berikut untuk mereset password root MySQL/MariaDB:
Hentikan layanan MySQL
Untuk mengubah password root, terlebih dahulu harus menghentikan server MySQL. Untuk melakukannya ketik perintah berikut:
systemctl stop mysql
Mulai server MySQL tanpa grant tabel
Jalankan server database tanpa memuat grant tabel:
mysqld_safe --skip-grant-tables &
Tanda ampersand & di akhir perintah di atas akan menyebabkan program berjalan di latar belakang, sehingga dapat terus menggunakan shell.
Ketika opsi –skip-grant-tables digunakan, siapa pun dapat terhubung ke server database tanpa password dan dengan semua hak istimewa yang diberikan.
Masuk ke shell MySQL
Sekarang Anda dapat terhubung ke server database sebagai pengguna root:
mysql -u root
Membuat password root baru
- Jalankan perintah berikut jika menggunakankan MySQL 5.7.6 dan yang lebih baru atau MariaDB 10.1.20 dan yang lebih baru:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW_PASSWORD'; FLUSH PRIVILEGES;
Jika pernyataanALTER USER
tidak berfungsi, cobalah ubah tabel user secara langsung:UPDATE mysql.user SET authentication_string = PASSWORD('NEW_PASSWORD') (con)WHERE User = 'root' AND Host = 'localhost'; FLUSH PRIVILEGES;
- Jalankan perintah berikut jika memiliki MySQL 5.7.5 dan yang lebih lama atau MariaDB 10.1.20 dan yang lebih lama
USET PASSWORD FOR 'root'@'localhost' = PASSWORD('MY_NEW_PASSWORD'); FLUSH PRIVILEGES;
Dalam kedua kasus jika semuanya berjalan dengan baik, akan terlihat output berikut:
Query OK, 0 rows affected (0.00 sec)
Hentikan dan Mulai Server Database secara Normal
Sekarang setelah password root ditetapkan, hentikan server database dan mulai secara normal:
mysqladmin -u root -p shutdown
Anda akan diminta untuk memasukkan password root yang baru.
Mulai server database secara normal:
- Untuk MySQL, ketik:
systemctl start mysql
- Untuk MariaDB, ketik:
systemctl start mariadb
Verifikasi Password
Untuk memverifikasi bahwa password root baru telah diterapkan dengan benar, ketik:
mysql -u root -p
Akan diminta untuk memasukkan password root yang baru.
Pastikan password root baru Anda kuat dan simpan di tempat yang aman.