Bagaimana cara mengubah jenis otentikasi di meja kerja mysql?

Panduan ini menjelaskan mengapa dan bagaimana mengubah metode autentikasi untuk pengguna root MySQL menjadi metode Caching SHA-2 Pluggable Authentication atau Native Pluggable Authentication di Ubuntu

Isi

pengantar

Bahkan jika Anda memiliki pengguna, Anda masih tidak dapat mengautentikasi dengan server database sebagai

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
8 pengguna dengan kata sandi. Karena, pengguna root MySQL diatur untuk mengautentikasi menggunakan plugin
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
9 secara default alih-alih kata sandi dalam sistem Ubuntu yang menjalankan MySQL 5. 7 dan versi yang lebih baru. Karenanya, 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'

Plugin ________0______9 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 memerlukan 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, itu mengizinkan koneksi tanpa otentikasi lebih lanjut

Misalnya, jika ada pengguna bernama

$ sudo mysql
_1 di sistem operasi, dia akan dapat masuk ke akun
$ sudo mysql
2 dalam MySQL jika otentikasi soket Unix adalah mekanisme otentikasi yang ditentukan. Jika nama pengguna sistem operasi berbeda dari nama pengguna MySQL, plugin
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
9 hanya menolak koneksi

Plugin

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
9 meningkatkan keamanan, tetapi juga memperumit masalah saat kita menggunakan program eksternal seperti phpMyAdmin untuk mengakses server database

Selain itu, pengguna yang diautentikasi oleh plugin

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
_9 hanya dapat terhubung dari host lokal melalui file soket Unix. Mereka dilarang terhubung dari jarak jauh. Inilah mengapa kita perlu mengubah metode autentikasi untuk pengguna root MySQL di Ubuntu

1. Ubah Metode Otentikasi Untuk Pengguna Root MySQL Di Ubuntu

MySQL menyediakan banyak metode autentikasi dan plugin yang mengimplementasikan metode tersebut. Dalam panduan ini, kami hanya membahas dua plugin yang disebut

$ sudo mysql
6 dan
$ sudo mysql
7 yang mengimplementasikan metode yang masing-masing disebut Caching SHA-2 Pluggable Authentication dan Native Pluggable Authentication

Pertama, kita akan melihat bagaimana mengubah metode autentikasi untuk pengguna root MySQL menjadi

$ sudo mysql
6

1. 1. Ubah plugin autentikasi menjadi caching_sha2_password

Plugin

$ sudo mysql
6 melakukan autentikasi menggunakan hashing kata sandi SHA-256. Di MySQL8. 0,
$ sudo mysql
_6 adalah plugin otentikasi default daripada
$ sudo mysql
7. Ini memberikan enkripsi kata sandi yang lebih aman, otentikasi lebih cepat, dan kinerja yang lebih baik

Untuk mengubah plugin autentikasi, login ke server MySQL menggunakan perintah

$ sudo mysql

Karena MySQL 8 menggunakan plugin

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
_9 di Ubuntu, perintah di atas akan memungkinkan Anda untuk masuk ke server MySQL sebagai pengguna
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
8. Masukkan kata sandi
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
_4 Anda untuk mengotentikasi

Selanjutnya, temukan metode otentikasi saat ini untuk semua akun pengguna mysql dengan menjalankan perintah berikut di prompt MySQL

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Keluaran sampel

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)

Bagaimana cara mengubah jenis otentikasi di meja kerja mysql?
Periksa metode otentikasi saat ini untuk pengguna root mysql

Seperti yang Anda lihat, pengguna root MySQL menggunakan plugin

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
9 untuk otentikasi. Mari kita ubah plugin
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
_9 menjadi plugin
$ sudo mysql
6 dengan menggunakan perintah
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
8 seperti di bawah ini

Perlu diketahui bahwa jika Anda telah mengaktifkan plugin

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
_9 saat mengatur kata sandi pengguna root MySQL, Anda harus memasukkan kata sandi yang kuat berdasarkan kebijakan kata sandi saat ini. Kata 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

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)
_0 pada perintah di atas dengan kata sandi yang kuat dan unik pilihan Anda dan catat sesuai kebutuhan 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;

Keluaran sampel

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | 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)

Bagaimana cara mengubah jenis otentikasi di meja kerja mysql?
Ubah plugin autentikasi menjadi caching_sha2_password untuk pengguna root MySQL

Metode autentikasi untuk pengguna root MySQL telah diatur ke Caching SHA-2 Pluggable Authentication. Mulai sekarang, pengguna root MySQL dapat mengautentikasi menggunakan kata sandi

Keluar dari prompt 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

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
_1

Bagaimana cara mengubah jenis otentikasi di meja kerja mysql?
Login ke server MySQL dengan pengguna root dan kata sandi

Meskipun plugin

$ sudo mysql
_6 menyediakan enkripsi aman yang ditingkatkan dan kinerja yang lebih baik, plugin ini memiliki beberapa masalah kompatibilitas dengan instalasi MySQL yang ada dan menyebabkan masalah dengan beberapa versi PHP. Untuk detail, rujuk

Jika Anda mengalami masalah kompatibilitas atau jika klien atau konektor tidak mendukung plugin autentikasi

$ sudo mysql
6, kembalikan ke metode autentikasi asli i. e.
$ sudo mysql
7 seperti yang dijelaskan di bagian berikut

1. 2. Ubah plugin autentikasi ke mysql_native_password

MySQL menyertakan plugin

$ sudo mysql
_7 yang mengimplementasikan metode autentikasi native pluggable. Ini memberikan otentikasi berdasarkan metode hashing kata sandi

$ sudo mysql
_7 adalah metode otentikasi default di versi MySQL yang lebih lama

Untuk mengubah ke

$ sudo mysql
_7 plugin, login ke MySQL sebagai
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
8 pengguna

$ mysql -u root -p

Jika Anda menggunakan plugin

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
_9, Anda harus memasukkan perintah berikut untuk masuk ke server MySQL sebagai pengguna
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
8

$ sudo mysql

Untuk menetapkan plugin

$ sudo mysql
_7 sebagai autentikasi default untuk pengguna root MySQL, jalankan perintah berikut di prompt MySQL

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
_4

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;

Keluaran sampel

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
_7

Bagaimana cara mengubah jenis otentikasi di meja kerja mysql?
Ubah plugin autentikasi menjadi mysql_native_password untuk pengguna root MySQL

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 plugin

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
_9 menjadi
$ sudo mysql
6 atau plugin
$ sudo mysql
7 untuk pengguna root MySQL di sistem operasi Ubuntu

Bacaan terkait

  • Cara Mereset Kata Sandi Root Di MySQL 8 Di Ubuntu Linux

auth_socketcaching_sha2_passwordDatabaseLinuxMySQLMySQL authentication methodMySQL authentication pluginMySQL root usermysql_native_passwordUbuntu

Bagaimana cara mengubah tipe autentikasi menjadi standar di MySQL Workbench?

Untuk mengubah metode autentikasi, ketikkan yang berikut ini di konsol server mysql Anda. mysql> ALTER USER 'root'@'localhost' DIIDENTIFIKASI DENGAN mysql_native_password OLEH 'password';

Apa jenis otentikasi standar untuk MySQL?

Secara default, MySQL menggunakan plugin autentikasi mysql_native_password bawaan, yang melakukan autentikasi menggunakan metode hashing kata sandi asli. Untuk keamanan yang lebih baik, penerapan ini menggunakan plugin autentikasi sha256_password dan auth_socket untuk autentikasi pengguna.

Bagaimana cara menjalankan MySQL 8. 0 dengan otentikasi kata sandi asli?

BUAT PENGGUNA 'nativeuser'@'localhost'DIIDENTIFIKASI DENGAN mysql_native_password OLEH 'password' ; . cnf dengan menambahkan baris yang ditunjukkan di bawah ini dan memulai kembali layanan MySQL Anda. Ini akan memvalidasi semua pengguna database (termasuk root) menggunakan otentikasi mysql_native_password.

Apa itu caching_sha2_password dan mysql_native_password?

Di MySQL 8. 0, caching_sha2_password adalah plugin otentikasi default daripada mysql_native_password . Untuk informasi tentang implikasi dari perubahan ini untuk operasi server dan kompatibilitas server dengan klien dan konektor, lihat caching_sha2_password sebagai Plugin Otentikasi Pilihan.