Pada artikel ini saya akan menunjukkan cara mereset kata sandi root MySQL dengan dua cara berbeda. Kedua metode ini juga berfungsi dengan garpu MariaDB bebas-Oracle.
Mengapa?
Ada dua alasan utama mengapa seseorang perlu mengatur ulang kata sandi root:
- Anda lupa kata sandi itu
- Anda tidak tahu kata sandi itu
Mungkin ada banyak alasan untuk tidak mengetahui kata sandi:Anda tidak pernah tahu kata sandi dan DBA lama telah hilang; seseorang berubah untuk kesenangan atau alasan jahat; sekarang jam 3 pagi, sistem macet dan dba sedang berlibur di negara lain, dll.
Faktanya adalah bahwa suatu pagi Anda perlu memasukkan database dan mendapatkan situasi ini:
Saya berasumsi bahwa Anda memiliki pengguna super (yaitu su atau sudo untuk melakukan root) akses ke Sistem Operasi. Sistem Operasi saya dalam tutorial ini adalah Debian Linux.
Kedua metode mengharuskan Anda untuk menghentikan layanan mysql sebelumnya. Lakukan dengan (jangan lupa su/sudo seperlunya):
# service mysql stop
Metode 1:
Buat file dengan perintah SQL untuk mengatur password root baru yang akan kita gunakan di mysql start. Anda dapat menggunakan editor teks apa saja atau cukup ketik:
# echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';" > passreset.sql
Jika Anda memilih editor teks, buat file hanya dengan bagian yang dicetak tebal. Tentu saja, pilih yang nyata sandi, mudah diingat dan sulit ditemukan.
Dan mulai secara manual dengan pengguna mysql ( -u mysql) dan dengan file yang kita buat sebelumnya (–init-file:passreset.sql). Baris perintah lengkapnya adalah:
# mysqld -u mysql --init-file=/var/lib/mysql/passreset.sql
Tunggu hingga muncul pesan:mysqld:ready for connection . Kemudian buka konsol lain untuk menguji kata sandi root baru Anda:
Metode 2:
Di masa lalu saya pernah melihat ini cara mereset kata sandi root mysql beberapa kali di internet. Pada percobaan pertama pagi ini tidak berhasil untuk saya, tetapi saya menemukan solusi.
Kami akan menggunakan sakelar perintah mysqld ini:
--skip-grant-tables Start without grant tables. This gives all users FULL ACCESS to all tables.
Ini memberi saya akses penuh ke semua tabel. Prosedurnya adalah menghubungkan ke mysql dan menjalankan perintah ALTER USER yang telah kita lihat di metode sebelumnya, tetapi saya mendapatkan kesalahan tentang mysqld yang berjalan dengan skip-grant-tables.
Solusinya adalah menjalankan mysqld dengan switch skip-grant-tables dan menggunakan pengguna mysql. Baris perintah lengkapnya adalah:
# mysqld -u mysql --skip-grant-tables
Dan, di konsol lain, hapus hak istimewa sebelum pembaruan, lalu hapus lagi hak istimewa:
# mysql -u root
MariaDB (none) > flush privileges;
MariaDB (none) > ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
MariaDB (none) > flush privileges;
MariaDB (none) > ^DBye
Selesai
Sekarang Anda dapat menghentikan mysql dan memulainya secara normal. Dalam kasus saya, ctrl-c tidak berfungsi untuk menghentikannya, saya harus mematikan proses yang dimulai secara manual sebelumnya:
# killall mysqld
# service mysql start
Dan ini dia, dengan salah satu metode tersebut Anda mendapatkan kembali kendali atas MySQL atau MariaDB Anda.