Skip to main content

Cara Mengubah Password User MySQL

·2 mins

Untuk mengganti password pada user MySQL, Anda dapat melakukannya dengan satu perintah tunggal seperti:

ALTER USER 'userdb'@'localhost' IDENTIFIED BY 'xxx';

Selain itu, Anda juga dapat mengganti password user di MySQL secara massal dengan menggunakan metode berikut.

Generate Script SQL Otomatis
#

Metode ini cocok untuk MySQL 5.7 hingga MySQL 8.0+ dan relatif aman karena Anda dapat meninjau seluruh perintah sebelum menjalankannya.

Login ke MySQL sebagai user yang memiliki hak administratif (misalnya root), kemudian jalankan query berikut untuk menghasilkan perintah ALTER USER:

SELECT CONCAT(
    'ALTER USER ''', user, '''@''', host,
    ''' IDENTIFIED BY ''PasswordBaruAnda123!'';'
) AS alter_command
FROM mysql.user
WHERE user NOT IN (
    'root',
    'mysql.session',
    'mysql.sys',
    'mysql.infoschema'
);

Contoh hasil:

+-------------------------------------------------------------------+
| alter_command                                                     |
+-------------------------------------------------------------------+
| ALTER USER 'PUBLIC'@'' IDENTIFIED BY 'PasswordBaruAnda123!';       |
| ALTER USER 'dev81'@'localhost' IDENTIFIED BY 'PasswordBaruAnda123!'; |
| ALTER USER 'dev82'@'localhost' IDENTIFIED BY 'PasswordBaruAnda123!'; |
+-------------------------------------------------------------------+

Atau jika hanya ingin menghasilkan perintah untuk satu user tertentu:

SELECT CONCAT(
    'ALTER USER ''', user, '''@''', host,
    ''' IDENTIFIED BY ''PasswordBaruAnda123!'';'
) AS alter_command
FROM mysql.user
WHERE user = 'userdb';

Periksa kembali daftar user yang akan diubah. Salin perintah yang diperlukan ke dalam file, misalnya update_pass.sql, kemudian jalankan:

mysql -u root -p < update_pass.sql

Shell Script (Linux/Bash)
#

Jika memiliki akses shell ke server Linux, Anda dapat mengotomatisasi perubahan password menggunakan Bash.

#!/bin/bash

# Konfigurasi
MYSQL_USER="root"
MYSQL_PASS="password_root_anda"
NEW_PASS="PasswordBaruAnda123!"

# Ambil daftar user non-sistem
USERS=$(mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -N -e "
SELECT CONCAT(user, '|', host)
FROM mysql.user
WHERE user NOT IN (
    'root',
    'mysql.session',
    'mysql.sys',
    'mysql.infoschema'
);
")

# Ubah password setiap user
while IFS='|' read -r USER HOST; do
    echo "Mengubah password untuk ${USER}@${HOST} ..."
    mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -e \
        "ALTER USER '${USER}'@'${HOST}' IDENTIFIED BY '${NEW_PASS}';"
done <<< "$USERS"

echo "Selesai."

Related