Panduan ini menjelaskan mengapa dan bagaimana mengubah metode otentikasi untuk pengguna root MySQL menjadi Caching SHA-2 Pluggable Authentication atau Otentikasi Asli Pluggable metode di Ubuntu.
Pengantar
Bahkan jika Anda memiliki kata sandi pengaturan untuk root MySQL pengguna, Anda masih tidak dapat mengautentikasi dengan server database sebagai root
pengguna dengan kata sandi. Karena, pengguna root MySQL diatur untuk mengautentikasi menggunakan auth_socket
plugin secara default alih-alih kata sandi di sistem Ubuntu yang menjalankan MySQL 5.7 dan versi yang lebih baru. Oleh karena itu, Anda tidak dapat mengakses server MySQL dengan pengguna root dan kata sandinya.
Bahkan jika Anda mencoba mengautentikasi sebagai pengguna root menggunakan perintah:
$ mysql -u root -p
Anda akan mendapatkan pesan kesalahan berikut:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
auth_socket
plugin memeriksa apakah nama pengguna soket (nama pengguna sistem operasi) cocok dengan nama pengguna MySQL yang ditentukan oleh program klien ke server.
Plugin ini tidak peduli dan tidak membutuhkan kata sandi. Itu hanya memeriksa apakah pengguna terhubung menggunakan soket UNIX dan kemudian membandingkan nama pengguna.
Jika plugin menemukan bahwa nama pengguna sistem operasi dan nama pengguna MySQL sama, plugin mengizinkan koneksi tanpa otentikasi lebih lanjut.
Misalnya, jika ada pengguna bernama ostechnix
pada sistem operasi, dia akan dapat login ke 'ostechnix'@'localhost'
akun dalam MySQL jika otentikasi soket Unix adalah mekanisme otentikasi yang ditentukan. Jika nama pengguna sistem operasi berbeda dari nama pengguna MySQL, auth_socket
plugin hanya menolak koneksi.
auth_socket
plugin meningkatkan keamanan, tetapi juga memperumit hal-hal ketika kita menggunakan program eksternal seperti phpMyAdmin untuk mengakses server database.
Selain itu, pengguna yang diautentikasi oleh auth_socket
plugin hanya dapat terhubung dari host lokal melalui file soket Unix. Mereka dilarang terhubung dari jarak jauh. Inilah sebabnya mengapa kita perlu mengubah metode otentikasi untuk pengguna root MySQL di Ubuntu.
1. Ubah Metode Otentikasi Untuk Pengguna Root MySQL Di Ubuntu
MySQL menyediakan banyak metode otentikasi dan plugin yang mengimplementasikan metode tersebut. Dalam panduan ini, kami hanya membahas dua plugin yang disebut caching_sha2_password
dan mysql_native_password
yang mengimplementasikan metode yang disebut Caching SHA-2 Pluggable Authentication dan Otentikasi Asli Pluggable masing-masing.
Pertama, kita akan melihat cara mengubah metode otentikasi untuk pengguna root MySQL menjadi caching_sha2_password
.
1.1. Ubah plugin autentikasi menjadi caching_sha2_password
caching_sha2_password
plugin melakukan otentikasi menggunakan hashing kata sandi SHA-256. Di MySQL 8.0, caching_sha2_password
adalah plugin otentikasi default daripada mysql_native_password
. Ini memberikan enkripsi kata sandi yang lebih aman, autentikasi yang lebih cepat, dan kinerja yang lebih baik.
Untuk mengubah plugin otentikasi, login ke server MySQL menggunakan perintah:
$ sudo mysql
Karena MySQL 8 menggunakan auth_socket
plugin di Ubuntu, perintah di atas akan memungkinkan Anda untuk login ke server MySQL sebagai root
pengguna. Masukkan sudo
. Anda sandi untuk mengautentikasi.
Selanjutnya, temukan metode otentikasi saat ini untuk semua akun pengguna mysql dengan menjalankan perintah berikut pada prompt MySQL:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Contoh keluaran:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | | auth_socket | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.01 sec)
Seperti yang Anda lihat, pengguna root MySQL menggunakan auth_socket
plugin untuk otentikasi. Mari kita ubah auth_socket
plugin ke caching_sha2_password
plugin dengan menggunakan ALTER USER
perintah seperti di bawah ini.
Harap perhatikan bahwa jika Anda telah mengaktifkan VALIDATE PASSWORD
plugin saat mengatur kata sandi pengguna root MySQL, Anda harus memasukkan kata sandi yang kuat berdasarkan kebijakan kata sandi saat ini. Sandi yang kuat harus terdiri dari minimal 8 karakter termasuk huruf besar, huruf kecil, angka, dan karakter khusus.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Ganti Password123#@!
pada perintah di atas dengan kata sandi yang kuat dan unik pilihan Anda dan catat ketika kita membutuhkannya nanti.
Selanjutnya, perbarui perubahan menggunakan perintah:
mysql> FLUSH PRIVILEGES;
Sekarang periksa apakah plugin otentikasi saat ini diubah atau tidak menggunakan perintah:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Contoh keluaran:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | $A$005$z9Lq/%(r l +DDI9wJbql8DWZNRoet2BSwUrIgjq.l7FxRSyMb/OWk4 | caching_sha2_password | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Metode otentikasi untuk pengguna root MySQL telah diatur ke Caching SHA-2 Pluggable Authentication. Mulai sekarang, pengguna root MySQL dapat mengautentikasi menggunakan kata sandi.
Keluar dari perintah mysql:
mysql> exit
Untuk memverifikasi apakah pengguna root MySQL dapat login dengan kata sandi, masukkan perintah berikut:
$ mysql -u root -p
Masukkan kata sandi pengguna root MySQL:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 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. mysql>
Meskipun caching_sha2_password
plugin menyediakan enkripsi aman yang ditingkatkan dan kinerja yang lebih baik, ia memiliki beberapa masalah kompatibilitas dengan instalasi MySQL yang ada dan menyebabkan masalah dengan beberapa versi PHP. Untuk detailnya, lihat tautan ini .
Jika Anda mengalami masalah kompatibilitas atau jika klien atau konektor tidak mendukung caching_sha2_password
plugin otentikasi, kembalikan ke metode otentikasi asli yaitu mysql_native_password
seperti yang dijelaskan di bagian berikut.
1.2. Ubah plugin otentikasi menjadi mysql_native_password
MySQL menyertakan mysql_native_password
plugin yang mengimplementasikan metode otentikasi pluggable asli. Ini memberikan otentikasi berdasarkan metode hashing kata sandi.
mysql_native_password
adalah metode otentikasi default di versi MySQL yang lebih lama.
Untuk mengubah ke mysql_native_password
plugin, login ke MySQL sebagai root
pengguna:
$ mysql -u root -p
Jika Anda menggunakan auth_socket
plugin, Anda harus memasukkan perintah berikut untuk login ke server MySQL sebagai root
pengguna:
$ sudo mysql
Untuk menyetel mysql_native_password
plugin sebagai otentikasi default untuk pengguna root MySQL, jalankan perintah berikut pada prompt MySQL.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';
Perbarui perubahan menggunakan perintah:
mysql> FLUSH PRIVILEGES;
Sekarang periksa apakah metode otentikasi diubah atau tidak menggunakan perintah:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Contoh keluaran:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | *B6032809F2C8CE37BDF05DEFE5BA30D6DC74DC68 | mysql_native_password | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Selesai! Kami telah mengubah metode otentikasi untuk pengguna root MySQL menjadi Native Pluggable Authentication.
Kesimpulan
Dalam panduan ini, kami melihat mengapa kami perlu mengubah metode otentikasi untuk pengguna root MySQL di sistem Ubuntu yang menjalankan MySQL 5.7 dan versi yang lebih baru. Kami juga telah melihat cara mengubah auth_socket
plugin ke caching_sha2_password
atau mysql_native_password
plugin untuk pengguna root MySQL di sistem operasi Ubuntu.
Bacaan terkait:
- Cara Reset Kata Sandi Root Di MySQL 8 Di Ubuntu Linux