GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengubah / Mengatur Ulang Kata Sandi root MySQL atau MariaDB

Baru-baru ini, saya mengubah kata sandi pengguna root MySQL situs web saya. Lalu saya berpikir apa yang akan terjadi jika saya lupa password root MySQL?

Apakah ada cara mudah untuk mereset kata sandi root MySQL atau MariaDB?

Saya melihat melalui beberapa tutorial online, tetapi tampaknya tidak ada yang cukup lengkap untuk membedakan antara mengubah kata sandi dan mengatur ulang kata sandi. Mereka tampaknya kurang detail tentang tabel MySQL di mana kata sandi pengguna disimpan dan di kolom mana.

Dalam tutorial ini, kita akan mempelajari topik berikut.

  1. Cara Mengubah Kata Sandi root MySQL/MariaDB
  2. Cara Menyetel Ulang Kata Sandi root MySQL/MariaDB

Saya akan berusaha untuk membuatnya selengkap mungkin, dan semoga setelah membaca ini, Anda akan menyelesaikan tugas ini dengan mudah tanpa perlu bantuan lebih lanjut.

Apa perbedaan antara mengubah dan mengatur ulang kata sandi?

Jika Anda mengetahui kata sandi root, Anda dapat terhubung ke database sebagai pengguna root dan kemudian mengubah kata sandi dengan sangat mudah. Anda dapat mengubah kata sandi root serta kata sandi pengguna lainnya.

Jika Anda lupa kata sandi root, berarti Anda tidak dapat terhubung ke server MySQL sebagai pengguna root. Pengguna root memiliki hak istimewa tertinggi dan Anda tidak dapat mengubah kata sandinya melalui akun lain. Kami harus melakukan beberapa langkah tambahan dalam hal ini untuk mereset kata sandi root MySQL.

Langkah MySQL dan MariaDB Sama?

MariaDB dibangun di atas MySQL. Ini sangat populer untuk persyaratan hosting web. Faktanya, JournalDev dan semua situs web saya menggunakan database MariaDB. Perintah apa pun yang berfungsi untuk MySQL akan berfungsi juga untuk MariaDB.

Satu-satunya penyesuaian dalam perintah yang mungkin harus Anda lakukan adalah menghentikan dan memulai server MySQL. Saya menggunakan Ubuntu untuk tutorial ini dan saya menggunakan systemctl untuk memulai/menghentikan layanan. Anda juga dapat menggunakan /etc/init.d/mysql untuk melakukan operasi yang sama.

Jika Anda menggunakan OS Windows, silakan gunakan mysqld atau mysqladmin dari command prompt untuk memulai atau menghentikan server MySQL. Mereka berada di folder bin instalasi MySQL.

Cara Mengubah Kata Sandi root MySQL atau MariaDB

Saya menggunakan database MariaDB, kita bisa menggunakan opsi –version untuk mengetahui versinya.

# mariadb --version
mariadb  Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
# 

1. Hubungkan ke MySQL sebagai pengguna root

# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

2. Ubah password dan nilai authentication_string di tabel mysql.user

Kata sandi pengguna MySQL disimpan dalam kata sandi tabel mysql.user dan kolom otentikasi_string dalam bentuk terenkripsi. Kita dapat menggunakan fungsi PASSWORD() untuk mengonversi string teks biasa menjadi nilai terenkripsi dan menyetel kolom ini.

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost';
+-------------------------------------------+-------------------------------------------+
| password                                  | authentication_string                     |
+-------------------------------------------+-------------------------------------------+
| *E510A8BC6807F8BF4913D893620792C432FCBA5B | *E510A8BC6807F8BF4913D893620792C432FCBA5B |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost';
+-------------------------------------------+-------------------------------------------+
| password                                  | authentication_string                     |
+-------------------------------------------+-------------------------------------------+
| *6F168491676C70E51CB8D0F14D6B581D1322A77A | *6F168491676C70E51CB8D0F14D6B581D1322A77A |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye
root@localhost:~# 

Mari kita pahami apa yang terjadi pada kueri di atas.

  • Pertama-tama kita ubah databasenya menjadi 'mysql'
  • Kemudian, kami menyetel nilai kolom 'authentication_string' dan 'password' untuk pengguna 'root'@'localhost' dengan kata sandi baru.
  • Kemudian kita memuat ulang tabel hibah menggunakan perintah FLUSH PRIVILEGES.
  • Kemudian keluar dari sesi MySQL. Kata sandi root telah berhasil diubah.

CATATAN :Saya mencoba menggunakan ALTER USER perintah untuk mengubah kata sandi root, tetapi tidak berhasil.

MariaDB [mysql]> ALTER USER root@localhost IDENTIFIED BY 'qwerty2022';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER root@localhost IDENTIFIED BY 'qwerty2022'' at line 1
MariaDB [mysql]>

3. Verifikasi login pengguna root menggunakan kata sandi baru

# mysql -uroot -pqwerty2021
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Itu dia. Kami telah berhasil mengubah kata sandi pengguna MySQL/MariaDB.

Cara Menyetel Ulang Kata Sandi root MySQL/MariaDB

Jika Anda lupa password root, maka kita perlu melakukan satu langkah tambahan agar kita bisa login ke terminal MySQL tanpa memberikan password.

1. Hentikan Server MySQL

# systemctl stop mysql

Anda juga dapat menjalankan systemctl stop mariadb , efeknya akan sama.

2. Memulai Server MySQL tanpa izin memeriksa pengaturan

Idenya adalah untuk memulai server MySQL tanpa memuat informasi tabel hibah, sehingga kita dapat login sebagai pengguna root tanpa memberikan kata sandi.

Ini adalah risiko keamanan untuk menjalankan server MySQL seperti ini, sehingga harus dilakukan sebentar dan segera dimatikan setelah mengatur ulang kata sandi root.

Kita dapat memulai server MySQL dalam mode aman dan meneruskan –skip-grant-tables opsi untuk melewati pemuatan tabel hibah yang menyimpan pengaturan hak pengguna.

# sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 11734
root@localhost:~# 200427 20:05:40 mysqld_safe Logging to syslog.
200427 20:05:40 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
#

Penting untuk menjalankan perintah yang diakhiri dengan &agar berjalan di latar belakang. Saya juga melewati –skip-networking opsi untuk melewati jaringan yang mencegah klien lain terhubung ke server MySQL.

3. Hubungkan ke Server MySQL sebagai root tanpa memasukkan kata sandi

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Perhatikan bahwa kami tidak memberikan kata sandi root, tetapi kami masih dapat terhubung ke server MySQL.

4. Setel ulang kata sandi root di tabel mysql.user

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye
# 

5. Berhenti dan Mulai server MySQL

Pertama-tama, kita akan mematikan server MySQL yang sedang berjalan. PID ada di /var/run/mysqld/mysqld.pid berkas.

# cat /var/run/mysqld/mysqld.pid
11891
# sudo kill 11891
# 

Sekarang, mulai server MySQL dalam mode normal.

# systemctl start mysql

6. Verifikasi dengan masuk sebagai pengguna root dengan kata sandi baru

# mysql -uroot -pqwerty2022
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Jika Anda mencoba masuk sebagai root tanpa kata sandi, itu akan menimbulkan kesalahan "Akses ditolak".

# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# 

Kesimpulan

Pengguna root MySQL sama seperti pengguna lainnya. Namun, mengubah atau mengatur ulang kata sandinya agak rumit karena ini adalah pengguna super dan kami tidak dapat mengubah kata sandi root dari login pengguna lain.


Linux
  1. Cara Reset Kata Sandi Root Server MySQL

  2. Bagaimana Kami Mengubah Kata Sandi Root?

  3. Bagaimana cara mereset kata sandi root MySQL?

  1. Cara mereset kata sandi root MySql

  2. Setel ulang kata sandi root MySQL

  3. Cara mengubah kata sandi root mysql

  1. Cara Mengatur Ulang Kata Sandi Root MySQL Anda di CentOS 6

  2. Cara mereset kata sandi root MySql

  3. Cara Mengatur Ulang Kata Sandi Root MySQL Atau MariaDB