Apakah Anda lupa kata sandi pengguna root MySQL Anda? Jangan khawatir! Panduan ini memandu Anda melalui langkah-langkah untuk mereset kata sandi pengguna root MySQL di sistem operasi Linux. Langkah-langkah yang diberikan di bawah ini juga dapat berfungsi untuk mereset kata sandi root MariaDB.
Kami telah memposting panduan untuk mengatur ulang kata sandi pengguna root (administratif) di MySQL versi yang lebih lama, yaitu MySQL 5.7. Tetapi, metode itu tidak berfungsi dengan versi MySQL 8 yang baru. Jika Anda ingin mereset kata sandi root di MySQL 8, ikuti salah satu dari dua solusi yang diberikan di bawah ini.
Setel Ulang Kata Sandi Pengguna Root MySQL Di Linux
Seperti yang telah saya sebutkan, kita dapat mereset kata sandi root MySQL dengan dua cara.
- Cara umum,
- Menggunakan
init_file
variabel sistem.
1. Cara umum untuk mereset kata sandi root MySQL
Metode ini akan bekerja terlepas dari sistem operasi yang Anda gunakan. Saya memperingatkan Anda bahwa ini kurang aman cara, karena kita akan memulai server MySQL dengan --skip-grant-tables
pilihan. Ini memberi siapa pun akses ke server akses tak terbatas ke semua basis data .
Pertama, hentikan layanan MySQL menggunakan perintah:
$ sudo systemctl stop mysql
Anda dapat memverifikasi apakah MySQL benar-benar dihentikan dengan perintah:
$ sudo systemctl status mysql
Contoh keluaran:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2021-05-29 11:53:08 UTC; 8s ago Process: 560 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Process: 666 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS) Main PID: 666 (code=exited, status=0/SUCCESS) Status: "Server shutdown complete" May 29 10:08:33 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server… May 29 10:08:37 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server. May 29 11:53:07 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server… May 29 11:53:08 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded. May 29 11:53:08 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.
Nah, layanan MySQL tidak berjalan.
Sekarang, restart server MySQL tanpa pemeriksaan izin dengan menjalankan perintah berikut:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Di sini, --skip-grant-tables
opsi memungkinkan Anda untuk terhubung ke server database mysql tanpa kata sandi dan dengan semua hak istimewa. --skip-networking
opsi digunakan untuk mencegah klien lain terhubung ke server database. Dan, ampersand (&
) simbol digunakan untuk menjalankan perintah di latar belakang, sehingga Anda dapat mengetikkan perintah lain yang diberikan pada langkah selanjutnya. Harap diingat bahwa perintah di atas berbahaya dan server database Anda menjadi tidak aman dan rentan terhadap ancaman keamanan. Anda harus menjalankan perintah ini hanya untuk waktu yang singkat untuk menyetel ulang sandi.
Anda mungkin melihat kesalahan berikut:
2021-05-29T12:00:19.991826Z mysqld_safe Logging to '/var/log/mysql/error.log'. 2021-05-29T12:00:19.996942Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
Jika Anda melihat kesalahan ini, buat direktori yang hilang (mis. /var/run/mysqld
) dan atur izin yang tepat seperti di bawah ini.
$ sudo mkdir -p /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld
Sekarang coba lagi untuk memulai server mysql tanpa kata sandi dan dengan hak akses root:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Selanjutnya, sambungkan ke server mysql menggunakan perintah:
$ mysql
Anda akan diarahkan ke prompt shell mysql.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Karena kami masuk tanpa memuat tabel hibah (karena kami menggunakan --skip-grant-tables
option), kami tidak dapat menggunakan ALTER USER
perintah untuk mengatur ulang kata sandi. Jadi mari kita memuat tabel hibah menggunakan perintah:
mysql> FLUSH PRIVILEGES;
Sekarang, jalankan perintah berikut untuk memperbarui kata sandi pengguna root mysql:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';
Pada perintah di atas, ganti [email protected]#@!
dengan kata sandi Anda sendiri. Harap dicatat bahwa jika telah mengaktifkan Validate Password
komponen, Anda harus menggunakan kata sandi yang kuat.
Terakhir, keluar dari prompt mysql:
mysql> exit
Terakhir, matikan server database yang berjalan yang Anda mulai sebelumnya dengan --skip-grant-tables
pilihan. Untuk melakukannya, jalankan:
$ sudo mysqladmin -u root -p shutdown
Anda akan diminta untuk memasukkan sudo
kata sandi diikuti oleh root
MySQL kata sandi pengguna yang Anda tetapkan di langkah sebelumnya.
[sudo] password for ostechnix: Enter password: 2021-05-29T12:09:38.425737Z mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu2004.localdomain.pid ended [1]+ Done sudo mysqld_safe --skip-grant-tables --skip-networking
Jika perintah di atas tidak bekerja, cari .pid file
yang berisi ID proses server. File PID biasanya akan tersedia di /var/lib/mysql/
atau /var/run/mysqld/
atau /usr/local/mysql/data/
direktori tergantung pada distribusi Anda, nama host, dan konfigurasi. Umumnya, nama file memiliki ekstensi .pid dan dimulai dengan mysqld
atau nama host sistem Anda.
Dalam kasus saya, ini adalah "/var/lib/mysql/ubuntuserver.pid"
.
Jadi, saya menghentikan instance server database dengan perintah:
$ sudo kill `/var/lib/mysql/ubuntuserver.pid`
Harap gunakan centang kembali untuk menyebutkan jalur file.
Kami juga dapat menemukan pid MySQL menggunakan ps
dan grep
perintah seperti di bawah ini:
$ ps ax | grep mysql
Contoh keluaran:
1930 pts/0 S 0:00 sudo mysqld_safe --skip-grant-tables --skip-networking 1931 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking 2091 pts/0 Sl 0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=ubuntuserver.pid
Bunuh secara manual seperti di bawah ini:
$ sudo kill <PID>
Atau, matikan semua layanan MySQL:
$ sudo killall mysql
Sekarang, mulai layanan MySQL secara normal menggunakan perintah:
$ sudo systemctl start mysql
Sekarang, masuk ke server MySQL dengan kata sandi baru:
$ mysql -u root -p
Contoh keluaran:
2. Setel ulang kata sandi root MySQL dengan file kata sandi
Cara lain untuk mereset kata sandi root mysql adalah dengan menggunakan init_file
variabel sistem.
Hentikan layanan MySQL:
$ sudo systemctl stop mysql
Buat file teks, misalnya ostechnix.txt
:
$ vi ostechnix.txt
Tambahkan baris berikut di dalamnya:
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';
Ganti [email protected]#@!
dengan kata sandi Anda sendiri di baris di atas. Jika Anda telah mengaktifkan Validate Password
plugin, Anda harus menentukan kata sandi yang kuat. Simpan dan tutup file.
Sekarang, mulai server MySQL dengan init_file
variabel sistem yang menunjuk ke ostechnix.txt
berkas:
$ sudo mysqld --init-file=/home/sk/ostechnix.txt &
Perintah ini akan mengeksekusi isi ostechnix.txt
file dan perbarui [email protected]
kata sandi akun dengan kata sandi baru yang disebutkan dalam ostechnix.txt
file dan akhirnya mulai server mysql.
Sekarang hentikan dan mulai ulang server mysql secara normal:
$ sudo systemctl stop mysql
$ sudo systemctl start mysql
Terakhir, hapus file kata sandi yaitu ostechnix.txt
.
$ rm /home/sk/ostechnix.txt
Sekarang Anda dapat masuk ke server mysql dengan kata sandi baru menggunakan perintah:
$ mysql -u root -p
Kami juga memposting metode yang sedikit berbeda untuk mereset kata sandi root MySQL. Lihat panduan berikut untuk detailnya:
>> How To Reset Root Password In MySQL 8 On Ubuntu Linux
Kesimpulan
Dalam panduan ini, kami telah mempelajari dua cara berbeda untuk mereset kata sandi pengguna root MySQL yang terlupakan di sistem operasi Linux. Jika Anda kehilangan kata sandi pengguna akun administratif database, Anda dapat dengan mudah mengatur ulang dalam beberapa menit.