Ubah Kata Sandi Pengguna MySQL: Perintah ALTER USER (MySQL 5.7 / 8.0) + Pemulihan Root

目次

1. [Quick Answer] Daftar Perintah Perubahan Kata Sandi Pengguna MySQL (Solusi Tercepat)

Perintah dasar untuk mengubah kata sandi pengguna di MySQL adalah ALTER USER.
Metode ini direkomendasikan pada MySQL 5.7 dan yang lebih baru, dan digunakan dengan cara yang sama pada MySQL 8.0.

1.1 Sintaks dasar (paling umum digunakan)

ALTER USER 'username'@'localhost' IDENTIFIED BY 'newpassword';
  • username : nama pengguna target yang akan diperbarui
  • localhost : host klien (sebuah akun MySQL diidentifikasi oleh “nama pengguna + host”)
  • newpassword : kata sandi baru

Setelah dieksekusi, perubahan berlaku segera. Dalam kebanyakan kasus, FLUSH PRIVILEGES; tidak diperlukan (ALTER USER secara otomatis memperbarui tabel hak istimewa).

Kesalahan umum

  • Bahkan dengan nama pengguna yang sama, @'localhost' dan @'%' diperlakukan sebagai akun yang berbeda
  • Simbol dalam kata sandi harus diapit dengan tanda kutip tunggal

1.2 Mengubah pengguna akses remote (%)

ALTER USER 'username'@'%' IDENTIFIED BY 'newpassword';

% berarti “host apa saja”.
Ini biasanya digunakan di lingkungan cloud atau untuk pengguna yang diizinkan terhubung dari luar.

Catatan

  • Lebih aman memeriksa terlebih dahulu dengan SELECT User, Host FROM mysql.user;
  • Jika Anda mengubah kata sandi untuk Host yang salah, Anda tidak akan dapat masuk

1.3 Mengubah kata sandi sambil menentukan plugin otentikasi (penting di 8.0)

Pada MySQL 8.0, plugin otentikasi default adalah caching_sha2_password.
Jika Anda tidak dapat terhubung dengan klien lama, tetapkan plugin secara eksplisit.

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'newpassword';
  • mysql_native_password : metode warisan (mengutamakan kompatibilitas)
  • caching_sha2_password : standar MySQL 8.0 (direkomendasikan)

Kesalahan tipikal

  • PHP atau klien lama mungkin tidak mendukung plugin default MySQL 8.0
  • Menyimpulkan “Saya tidak dapat masuk” tanpa memeriksa plugin otentikasi

1.4 Jika Anda mendapatkan error hak istimewa

Contoh error:

ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s)

Dalam kasus ini, pengguna yang sedang masuk tidak memiliki izin untuk melakukan perubahan.

Periksa:

SHOW GRANTS FOR CURRENT_USER();

Jalankan perintah sebagai root atau sebagai pengguna dengan hak istimewa yang cukup.

1.5 Cara memverifikasi setelah mengubah

SELECT User, Host, plugin FROM mysql.user WHERE User='username';
  • Periksa plugin otentikasi melalui kolom plugin
  • Pemeriksaan paling dapat diandalkan adalah benar‑benarnya masuk dan mengonfirmasi konektivitas

1.6 Apa yang terjadi pada sesi yang sudah ada

Setelah mengubah kata sandi:

  • Koneksi baru harus menggunakan kata sandi baru
  • Sesi yang ada mungkin dihentikan segera tergantung pada lingkungan
  • Di produksi, disarankan melakukan perubahan di luar jam kerja

2. Dasar-dasar Pengguna dan Host MySQL (Mencegah Masalah “Terjebak” Umum)

Di MySQL, pengguna tidak diidentifikasi hanya dengan “nama pengguna”. Sebaliknya, ia diidentifikasi oleh kombinasi “nama pengguna + host klien (Host)”. Jika Anda tidak memahami ini, Anda dapat mengalami masalah klasik: “Saya mengubah kata sandi tetapi masih tidak dapat masuk.”

2.1 Pengguna adalah pasangan “user@host”

Contoh:

  • 'appuser'@'localhost'
  • 'appuser'@'%'
  • 'appuser'@'192.168.1.%'

Ini semua diperlakukan sebagai akun yang berbeda. Jadi bahkan jika Anda mengubah kata sandi untuk localhost, itu tidak memengaruhi akun %.

Perintah pemeriksaan:

SELECT User, Host FROM mysql.user ORDER BY User, Host;

Kesalahan umum

  • Tidak menyadari ada beberapa akun dengan nama pengguna yang sama
  • Anda mengubah kata sandi untuk localhost, tetapi sebenarnya masuk melalui TCP (127.0.0.1)

2.2 localhost dan 127.0.0.1 diperlakukan berbeda

Di MySQL:

  • localhost → koneksi socket UNIX (koneksi internal lokal)
  • 127.0.0.1 → koneksi TCP/IP

Tergantung pada lingkungan, akun yang berbeda mungkin cocok.

Periksa:

mysql -u username -p -h 127.0.0.1

Jika Anda tidak dapat masuk dengan yang di atas, akun @'127.0.0.1' mungkin tidak ada.

2.3 Periksa pengguna yang sedang diautentikasi

Penting untuk memahami “akun mana yang Anda autentikasi sebagai.”

SELECT CURRENT_USER();

Ini menampilkan “user@host” yang sebenarnya diautentikasi.

SELECT USER(); menunjukkan informasi permintaan koneksi, sehingga mungkin tidak cocok.

2.4 Periksa hak istimewa (SHOW GRANTS)

Jika Anda tidak dapat mengubah kata sandi, hak istimewa yang tidak cukup mungkin menjadi penyebabnya.

SHOW GRANTS FOR 'username'@'host';

Atau untuk pengguna yang saat ini masuk:

SHOW GRANTS FOR CURRENT_USER();

Hak istimewa minimum yang diperlukan

  • ALTER USER
  • Atau SYSTEM_USER (MySQL 8.0 dan lebih baru)

2.5 Pola kegagalan umum

  1. Anda mengubah kata sandi untuk Host yang salah
  2. Plugin autentikasi berbeda (sangat umum di 8.0)
  3. Akun target tidak ada sejak awal

Periksa apakah pengguna ada:

SELECT User, Host FROM mysql.user WHERE User='username';

Setelah Anda memahami model ini, Anda dapat menghindari sebagian besar masalah terkait perubahan kata sandi.

3. Prosedur yang Direkomendasikan: Ubah dengan Aman menggunakan ALTER USER (Berfungsi untuk MySQL 8.0 / 5.7)

Di MySQL 5.7 dan selanjutnya, mengubah kata sandi dengan ALTER USER adalah pendekatan standar dan direkomendasikan.
Pembaruan langsung seperti UPDATE mysql.user dapat berperilaku berbeda tergantung pada versi dan membawa risiko kompatibilitas di masa depan, jadi sebaiknya dihindari.

3.1 Pemeriksaan Awal (Selalu konfirmasi sebelum mengubah)

Sebelum mengubah kata sandi, konfirmasikan tiga hal berikut.

① Konfirmasi pengguna dan Host target

SELECT User, Host FROM mysql.user WHERE User='username';
  • Periksa apakah ada beberapa akun dengan nama pengguna yang sama
  • Jangan bingungkan localhost dengan %

② Konfirmasi plugin autentikasi saat ini (penting di 8.0)

SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
  • caching_sha2_password (standar MySQL 8.0)
  • mysql_native_password (plugin warisan)

Beberapa kegagalan koneksi disebabkan oleh plugin autentikasi.

③ Konfirmasi pengguna yang sedang diautentikasi

SELECT CURRENT_USER();

Untuk menghindari kesalahan hak istimewa, jalankan perintah sebagai root atau sebagai pengguna dengan hak istimewa yang sesuai.

3.2 Jalankan ALTER USER (bentuk standar)

ALTER USER 'username'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';

Perubahan berlaku segera.
Dalam kebanyakan kasus, FLUSH PRIVILEGES; tidak diperlukan.

Catatan

  • Jika kebijakan kata sandi (validate_password) dilanggar, ERROR 1819 dapat terjadi
  • Jika kata sandi menyertakan karakter khusus, selalu letakkan dalam tanda kutip tunggal

3.3 Ubah sambil menentukan plugin autentikasi (hanya jika diperlukan)

Jika Anda menggunakan klien lama di lingkungan MySQL 8.0:

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';

Kasus di mana Anda harus mengubahnya:

  • Tidak dapat terhubung dengan klien PHP lama / MySQL lama
  • Lingkungan yang tidak mendukung caching_sha2_password

Kasus di mana Anda tidak harus mengubahnya:

  • Jika Anda sudah dapat terhubung tanpa masalah di lingkungan modern (plugin standar lebih aman)

3.4 Verifikasi setelah perubahan

① Verifikasi plugin autentikasi

SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';

② Verifikasi dengan benar-benar masuk

mysql -u username -p

Selalu uji bahwa Anda dapat masuk.

3.5 Dampak pada sesi yang ada

Setelah mengubah kata sandi:

  • Koneksi baru → harus menggunakan kata sandi baru
  • Koneksi yang ada → mungkin tetap tergantung pada lingkungan
  • Produksi → restart koneksi aplikasi mungkin diperlukan

Kesalahan umum

  • Tidak memperbarui kredensial koneksi aplikasi
  • Kata sandi lama masih tersisa di file konfigurasi

3.6 Tips operasional aman untuk produksi

  • Lakukan perubahan di luar jam kerja
  • Periksa file konfigurasi aplikasi terlebih dahulu
  • Lakukan pekerjaan tanpa memutus sesi SSH Anda
  • Saat mengubah root, pastikan Anda memiliki metode pemulihan yang siap

4. Perbedaan Antara MySQL 8.0 dan 5.7

Penyebab terbesar masalah saat mengubah kata sandi MySQL adalah perbedaan metode autentikasi antara MySQL 8.0 dan 5.7.
Khususnya, banyak kasus “Saya mengubahnya tapi saya tidak bisa login” disebabkan oleh perbedaan plugin autentikasi.

Diagram showing the difference between MySQL 5.7 mysql_native_password and MySQL 8.0 caching_sha2_password authentication methods

Perbedaan autentikasi antara MySQL 5.7 dan MySQL 8.0

4.1 Perbedaan plugin autentikasi default

VersionDefault authentication plugin
MySQL 5.7mysql_native_password
MySQL 8.0caching_sha2_password

Di MySQL 8.0, caching_sha2_password menjadi standar untuk keamanan yang lebih kuat.
Namun, klien lama (versi PHP lama, konektor MySQL lama, dll.) mungkin tidak mendukungnya.

Cara memeriksa:

SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';

Masalah umum

  • Klien lama tidak dapat terhubung ke pengguna yang dibuat di MySQL 8.0
  • Bahkan jika terjadi kesalahan, Anda tidak menyadari bahwa penyebab utamanya adalah plugin autentikasi

4.2 Cara mengalihkan plugin autentikasi untuk kompatibilitas

Hanya ketika Anda harus terhubung dari lingkungan lama, ubah seperti ini:

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';

Setelah mengubahnya, selalu jalankan tes koneksi.

Catatan

  • Dari sudut pandang keamanan, caching_sha2_password lebih aman
  • Jangan beralih ke plugin lama secara tidak perlu
  • Jika memungkinkan, memperbarui sisi klien lebih disukai

4.3 UPDATE Langsung Tidak Direkomendasikan

Di MySQL 5.7 dan sebelumnya, metode seperti berikut digunakan:

UPDATE mysql.user
SET authentication_string=PASSWORD('newpassword')
WHERE User='username';
FLUSH PRIVILEGES;

Namun, pendekatan ini adalah:

  • Sangat bergantung pada versi
  • Tunduk pada perubahan spesifikasi di 8.0
  • Kemungkinan akan ditinggalkan di masa depan

Aturan praktis: gunakan ALTER USER

4.4 Perbedaan perilaku plugin validate_password

Di MySQL 5.7 dan 8.0, fitur kebijakan kata sandi (pemeriksaan kekuatan) tersedia secara default.

Periksa:

SHOW VARIABLES LIKE 'validate_password%';

Jika Anda melanggar kebijakan, Anda mungkin mendapatkan:

ERROR 1819 (HY000)

.

Karena banyak lingkungan 8.0 menerapkan baseline keamanan yang lebih ketat,
setelah upgrade dari 5.7, Anda mungkin menemukan bahwa perubahan kata sandi tidak lagi lolos karena persyaratan kebijakan yang lebih kuat.

4.5 Cara Memeriksa Versi Anda

Jika Anda tidak yakin versi mana yang Anda jalankan:

SELECT VERSION();

Jika Anda menerapkan perbaikan tanpa mengonfirmasi versi, Anda mungkin berakhir menggunakan metode yang salah

5. Memulihkan Kata Sandi root yang Terlupakan (Prosedur Berfokus pada Keamanan)

Jika Anda lupa kata sandi pengguna root MySQL (administrator), Anda tidak dapat login secara normal.
Dalam kasus ini, Anda harus sementara menonaktifkan tabel grant dan mereset kata sandi. Namun, prosedur ini membawa risiko keamanan, jadi ikuti langkah-langkahnya dengan hati-hati.

5.1 Konfirmasi Apakah Anda Benar-Benar Membutuhkan Kata Sandi root

Pertama, periksa yang berikut:

  • Apakah Anda memiliki hak istimewa sudo tingkat OS
  • Apakah autentikasi auth_socket diaktifkan (umum pada sistem berbasis Ubuntu)

Contoh pemeriksaan:

SELECT User, Host, plugin
FROM mysql.user
WHERE User='root';

Jika plugin adalah auth_socket, Anda mungkin dapat login sebagai pengguna root OS.

sudo mysql

Jika ini berhasil, Anda hanya perlu mereset kata sandi.

5.2 Alur Pemulihan (prosedur umum)

① Hentikan server MySQL

sudo systemctl stop mysql

② Mulai dengan tabel grant dinonaktifkan

sudo mysqld_safe --skip-grant-tables &

--skip-grant-tables menonaktifkan autentikasi.
Dalam keadaan ini, siapa pun dapat terhubung, jadi selesaikan prosedur dengan cepat.

③ Terhubung ke MySQL

mysql -u root

Anda dapat terhubung tanpa kata sandi.

④ Reset kata sandi root (metode yang direkomendasikan)

ALTER USER 'root'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';

Penting

  • JANGAN langsung menggunakan UPDATE mysql.user
  • Gunakan ALTER USER (untuk kompatibilitas versi)

⑤ Aktifkan kembali tabel grant

FLUSH PRIVILEGES;

⑥ Restart MySQL dalam mode normal

sudo systemctl restart mysql

Kemudian verifikasi login normal:

mysql -u root -p

5.3 Kesalahan umum

  • Meninggalkan --skip-grant-tables diaktifkan (risiko keamanan serius)
  • Secara tidak sengaja mengubah Host root
  • Mengubah plugin autentikasi secara salah dan mengunci diri sendiri

5.4 Catatan untuk lingkungan produksi

  • Selalu lakukan ini selama jendela pemeliharaan pada server publik
  • Jaga sesi SSH tetap aktif saat bekerja
  • Buat cadangan terlebih dahulu jika memungkinkan

Pemulihan kata sandi root dapat dilakukan dengan aman jika dieksekusi dengan hati-hati.

6. Kesalahan Umum dan Solusi (Tangkap Lalu Lintas berdasarkan Pesan Kesalahan)

Beberapa kesalahan tipikal terjadi saat mengubah kata sandi MySQL.
Di bawah ini, kami mengorganisir penyebab umum dan solusi berdasarkan kode kesalahan yang sering dicari.

6.1 ERROR 1819 (Kata sandi tidak memenuhi persyaratan kebijakan)

Contoh kesalahan:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Penyebab

Kata sandi gagal validasi kekuatan yang diterapkan oleh plugin validate_password.

Periksa kebijakan saat ini

SHOW VARIABLES LIKE 'validate_password%';

Pengaturan penting:

  • validate_password.length
  • validate_password.policy
  • validate_password.mixed_case_count
  • validate_password.number_count
  • validate_password.special_char_count

Solusi ① (Direkomendasikan): Gunakan kata sandi yang lebih kuat

  • Setidaknya 12 karakter
  • Sertakan huruf besar, huruf kecil, angka, dan simbol
  • Hindari kata-kata kamus

Solusi ② (Sementara longgarkan kebijakan)

SET GLOBAL validate_password.policy = LOW;

Setelah menyelesaikan tugas Anda, disarankan untuk mengembalikan pengaturan asli.

Kesalahan umum

  • Meninggalkan kebijakan yang dilonggarkan di produksi
  • Mengabaikan bahwa mengubah pengaturan ini memerlukan hak istimewa SUPER

6.2 ERROR 1227 (Hak istimewa tidak mencukupi)

Contoh kesalahan:

ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s)

Penyebab

Pengguna saat ini kekurangan hak istimewa ALTER USER atau SYSTEM_USER.

Periksa hak istimewa

SHOW GRANTS FOR CURRENT_USER();

Solusi

Jalankan perintah sebagai root atau sebagai pengguna dengan hak istimewa yang mencukupi.

Jika diperlukan:

GRANT ALTER USER ON *.* TO 'username'@'host';
FLUSH PRIVILEGES;

Catatan

  • Di MySQL 8.0, hak istimewa SYSTEM_USER mungkin juga diperlukan
  • Ikuti prinsip hak istimewa paling sedikit di produksi

6.3 Tidak dapat login setelah mengubah kata sandi

Penyebab utama

  1. Host yang salah
  2. Ketidakcocokan plugin autentikasi
  3. Ketidakcocokan klien
  4. Konfigurasi aplikasi tidak diperbarui

① Periksa Host

SELECT User, Host FROM mysql.user WHERE User='username';

② Periksa plugin autentikasi

SELECT plugin FROM mysql.user WHERE User='username';

③ Ubah plugin autentikasi (jika diperlukan)

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';

④ Periksa konfigurasi aplikasi

  • .env
  • config.php
  • String koneksi (DSN)

Kesalahan umum

  • Mengubah MySQL tetapi tidak memperbarui aplikasi
  • Tidak me-restart container di lingkungan Docker

6.4 Masih dapat login dengan kata sandi lama setelah perubahan

Secara normal, perubahan yang dibuat dengan ALTER USER berlaku segera.

Penyebab yang mungkin:

  • Anda sebenarnya mengubah akun Host yang berbeda
  • Koneksi mengarah ke server lain (replica)
  • Penyimpanan cache sesi

Periksa:

SELECT CURRENT_USER();

Sangat penting untuk mengonfirmasi dengan akurat baik server yang terhubung maupun pengguna yang terautentikasi.

7. Operasi Keamanan: Kebijakan Kata Sandi dan Praktik Terbaik

Mengubah kata sandi bukanlah tugas satu kali.
Dalam operasi dunia nyata, Anda menjaga keamanan dengan menggabungkan penegakan kekuatan, desain hak istimewa, dan aturan operasional.

7.1 Menggunakan plugin validate_password

MySQL menyediakan fungsionalitas bawaan untuk menegakkan kekuatan kata sandi.

Periksa pengaturan saat ini

SHOW VARIABLES LIKE 'validate_password%';

Parameter konfigurasi utama

  • validate_password.length (panjang minimum)
  • validate_password.policy (LOW / MEDIUM / STRONG)
  • validate_password.mixed_case_count (jumlah huruf campuran)
  • validate_password.number_count (jumlah angka)
  • validate_password.special_char_count (jumlah karakter khusus)

Contoh konfigurasi (minimum 12 karakter, kebijakan MEDIUM)

SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.policy = MEDIUM;

Catatan

  • Perubahan GLOBAL dapat direset setelah restart
  • Untuk mempertahankan pengaturan, konfigurasikan mereka di file konfigurasi ( my.cnf / my.ini )

7.2 Persyaratan minimum untuk kata sandi yang kuat

Standar yang direkomendasikan dalam praktik:

  • Setidaknya 12 karakter
  • Sertakan huruf besar, huruf kecil, angka, dan simbol
  • Hindari kata dari kamus
  • Jangan gunakan kembali di layanan lain

Contoh:

X9v!pQ4z#Lm2

Contoh yang harus dihindari

password123
mysql2025
companyname!

7.3 Lebih penting daripada perubahan periodik

Lebih penting daripada “mengubah setiap enam bulan” adalah merancang dengan asumsi potensi kebocoran kredensial.

① Pisahkan pengguna aplikasi

  • Jangan gunakan root dalam aplikasi
  • Buat pengguna dengan hak istimewa paling sedikit

Contoh:

GRANT SELECT, INSERT, UPDATE ON dbname.* TO 'appuser'@'localhost';

② Minimalkan hak istimewa (Prinsip Hak Istimewa Minimum)

Izinkan hanya operasi yang diperlukan untuk membatasi potensi kerusakan.

③ Gunakan audit dan log

Contoh pemeriksaan log:

tail -f /var/log/mysql/mysql.log

MySQL Enterprise juga mendukung plugin audit.

7.4 Tips operasional untuk lingkungan produksi

  • Uji di staging sebelum melakukan perubahan produksi
  • Lacak riwayat perubahan (Git atau dokumentasi)
  • Selalu jalankan tes koneksi setelah perubahan
  • Jaga sesi SSH Anda tetap aktif saat bekerja

7.5 Hal-hal yang tidak boleh Anda lakukan

  • Gunakan akun root dalam aplikasi
  • Menyisipkan kata sandi secara keras dalam kode sumber
  • Nonaktifkan validate_password dan biarkan begitu
  • Biarkan server berjalan dengan --skip-grant-tables

Manajemen kata sandi bukan tugas sekali saja melainkan bagian dari desain operasional berkelanjutan.

8. FAQ (Pertanyaan yang Sering Diajukan)

8.1 Q. Apa yang terjadi pada sesi aktif setelah mengubah kata sandi?

A. Pada prinsipnya, koneksi baru memerlukan kata sandi baru.
Untuk sesi yang ada, mereka dapat langsung dihentikan atau tetap aktif tergantung pada lingkungan dan konfigurasi.

Dalam praktik:

  • Lakukan perubahan di luar jam kerja pada produksi
  • Restart aplikasi untuk menyegarkan koneksi

disarankan.

8.2 Q. Saya mengubah kata sandi tetapi masih tidak dapat masuk

Tiga penyebab paling umum adalah:

  1. Host salah ( localhost vs % , dll.)
  2. Ketidaksesuaian plugin otentikasi (sangat umum di 8.0)
  3. Konfigurasi aplikasi tidak diperbarui

Periksa dengan:

SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';

Perhatikan khusus kolom plugin.

8.3 Q. Bisakah saya mengizinkan hanya pengguna tertentu untuk mengubah kata sandi?

Ya.

GRANT ALTER USER ON *.* TO 'username'@'host';
FLUSH PRIVILEGES;

Di MySQL 8.0, hak istimewa SYSTEM_USER mungkin juga diperlukan.

SHOW GRANTS FOR 'username'@'host';

Gunakan ini untuk memverifikasi hak istimewa.

8.4 Q. Apakah metodenya sama di MariaDB?

Pada dasarnya, ALTER USER tersedia, tetapi:

  • Plugin otentikasi
  • Perilaku kebijakan kata sandi
  • Perbedaan spesifik versi

bisa berbeda tergantung pada lingkungan.

Periksa dengan:

SELECT VERSION();

MySQL Community Edition tidak menyediakan pelacakan riwayat kata sandi bawaan secara default.

8.5 Q. Apakah saya dapat memeriksa riwayat perubahan kata sandi?

Pendekatan yang mungkin:

  • Aktifkan pencatatan audit
  • Gunakan manajemen log eksternal
  • Lacak riwayat dalam dokumentasi operasional

Contoh:

tail -f /var/log/mysql/mysql.log

8.6 Q. Apakah saya dapat memulihkan pengguna non-root dengan –skip-grant-tables?

Ya, tetapi hal ini menciptakan keadaan yang sangat berbahaya.
Selalu kembali ke mode normal segera setelah menyelesaikan prosedur.

9. Ringkasan

Mengubah kata sandi MySQL mungkin terlihat sederhana, tetapi tanpa memahami model user@host, plugin otentikasi, dan desain hak istimewa, hal ini dapat dengan mudah menimbulkan masalah.

Poin-poin utama dari artikel ini adalah:

9.1 Gunakan ALTER USER sebagai metode standar

ALTER USER 'username'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';
  • Metode standar di MySQL 5.7 dan yang lebih baru
  • UPDATE mysql.user secara langsung tidak disarankan
  • FLUSH PRIVILEGES biasanya tidak diperlukan

9.2 Pengguna dikelola sebagai “user@host”

  • localhost dan % adalah akun yang berbeda
  • Beberapa akun dengan nama pengguna yang sama dapat ada
  • Periksa dengan SELECT User, Host FROM mysql.user;

9.3 Perhatikan plugin otentikasi di 8.0

  • Default 8.0: caching_sha2_password
  • Kompatibilitas lama: mysql_native_password
  • Jika Anda tidak dapat terhubung, periksa kolom plugin
    SELECT plugin FROM mysql.user WHERE User='username';
    

9.4 Berhati-hatilah saat memulihkan kata sandi root

  • --skip-grant-tables hanya merupakan langkah sementara
  • Selalu kembali ke mode normal setelah selesai
  • Lakukan selama jendela pemeliharaan di produksi

9.5 Sebagian besar kesalahan memiliki penyebab yang jelas

  • ERROR 1819 → Pelanggaran kebijakan kata sandi
  • ERROR 1227 → Hak istimewa tidak cukup
  • Tidak dapat masuk → Ketidaksesuaian host atau plugin otentikasi

9.6 Dalam praktiknya, prinsip hak istimewa paling sedikit dan desain operasional paling penting

  • Jangan gunakan root dalam aplikasi
  • Buat pengguna khusus
  • Terapkan kebijakan kata sandi yang kuat
  • Selalu uji koneksi setelah perubahan

Manajemen kata sandi MySQL bukan hanya tentang mengubah nilai—ini adalah dasar dari operasi basis data yang aman.
Pilih metode yang tepat untuk lingkungan Anda dan jalankan dengan hati-hati.