Saya telah menginstal MySQL dan selama instalasi saya dimintai kata sandi yang saya masukkan, tetapi sekarang guru saya mengatakan bahwa kita harus dapat masuk sebagai root tanpa kata sandi apa pun.
Ini berfungsi tetapi saya tidak mendapatkan hak istimewa apa pun:
Ini tidak berhasil:
Ini juga tidak
Jawaban yang Diterima:
Penyebab masalah
Konfigurasi default untuk login sebagai root
pengguna di MySQL 5.7 memerlukan penggunaan soket otentikasi. Ini dapat diverifikasi melalui kueri user
tabel:
mysql> select user,authentication_string,plugin from user where user='root';
+------+-----------------------+-------------+
| user | authentication_string | plugin |
+------+-----------------------+-------------+
| root | | auth_socket |
+------+-----------------------+-------------+
1 row in set (0.00 sec)
Dari dokumentasi:
Plugin socket memeriksa apakah nama pengguna socket (nama pengguna sistem
operasi) cocok dengan nama pengguna MySQL yang ditentukan oleh program
klien ke server. Jika nama tidak cocok, plugin akan memeriksa
apakah nama pengguna soket cocok dengan nama yang ditentukan di kolom
authentication_string dari baris tabel sistem mysql.user. Jika ditemukan
kecocokan, plugin mengizinkan koneksi.
Dengan kata lain, mysql secara default tidak memiliki kata sandi root yang ditetapkan – Anda harus menjalankan phpMyAdmin sebagai root atau melalui sudo
(keduanya adalah ide yang buruk untuk alasan keamanan), atau Anda mengubah metode otentikasi dan mengatur ulang kata sandi root seperti yang ditunjukkan dalam tutorial Digital Ocean.
Perhatikan bahwa selain nama yang sama, pengguna MySQL dan pengguna sistem tidak sama. Anda dapat memiliki pengguna MySQL jdoe
dan tidak memiliki pengguna seperti itu di sistem host. Jadi, root
adalah pengguna root MySQL, bukan pengguna sistem.
Langkah-langkah untuk mengubah plugin dan kata sandi:
-
buka terminal dan jalankan
sudo mysql -u root
. Anda akan melihat pesan ucapan danmysql>
mengingatkan. Ini adalah shell MySQL, yang berbeda dari shell baris perintah Anda, jadi hanya pernyataan SQL yang diterima di sini. -
Masukkan urutan kueri SQL berikut:
mysql> 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 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE user SET plugin='mysql_native_password',authentication_string=PASSWORD('newpassword') WHERE user = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1
-
Keluar dan coba masuk:
mysql> exit Bye $ sudo systemctl restart mysql $ sudo mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.21-1 (Debian) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 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>
Jika semuanya berjalan dengan baik, Anda seharusnya dapat masuk dari phpMyAdmin melalui kata sandi baru. Jika terjadi kesalahan, coba restart server tanpa pemeriksaan izin (itulah langkah nomor 3 dalam tutorial Digital Ocean). Untuk masalah lain, jangan ragu untuk mengajukan pertanyaan lain di sini atau di Administrator Basis Data – Stack Exchange
Terkait:Buat file LOG saat membuat beberapa file DATA untuk tempdb?