GNU/Linux >> Belajar Linux >  >> Ubuntu

Ubah Metode Otentikasi Untuk Pengguna Root MySQL Di Ubuntu

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

Ubuntu
  1. Menjadi Pengguna Root di Ubuntu 22.04 - Panduan langkah demi langkah?

  2. Ubah Jalur Folder Pengguna Default?

  3. shell berbeda untuk pengguna root dan non-root

  1. Cara Mengubah Kata Sandi Sudo atau Root di Ubuntu

  2. Bagaimana cara mengubah pengguna root di Ubuntu 22.04

  3. Cara Menginstal MySQL di Ubuntu 18.04 LTS

  1. Cara Mengubah Kata Sandi Pengguna di Ubuntu

  2. Cara Mengubah Kata Sandi Root di Ubuntu Linux

  3. Ubah Metode Otentikasi Untuk Pengguna Root MySQL Di Ubuntu