Beberapa sistem seperti Ubuntu, MySQL menggunakan Plugin auth_socket UNIX secara default.
Pada dasarnya ini berarti bahwa:db_users menggunakannya, akan "diautentikasi" oleh kredensial pengguna sistem. Anda dapat melihat apakah root
. Anda pengguna diatur seperti ini dengan melakukan hal berikut:
sudo mysql -u root # I had to use "sudo" since it was a new installation
mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
Seperti yang Anda lihat dalam kueri, root
pengguna menggunakan auth_socket
pengaya.
Ada dua cara untuk menyelesaikan ini:
- Anda dapat mengatur root pengguna untuk menggunakan
mysql_native_password
pengaya - Anda dapat membuat
db_user
baru dengan Andasystem_user
(disarankan)
Opsi 1:
sudo mysql -u root # I had to use "sudo" since it was new installation
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
sudo service mysql restart
Opsi 2: (ganti YOUR_SYSTEM_USER dengan nama pengguna yang Anda miliki)
sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
sudo service mysql restart
Ingat bahwa jika Anda menggunakan opsi #2, Anda harus terhubung ke MySQL sebagai nama pengguna sistem Anda (mysql -u YOUR_SYSTEM_USER
).
Catatan: Pada beberapa sistem (mis., Debian 9
(Peregangan)) plugin 'auth_socket' disebut 'unix_socket'
, jadi perintah SQL yang sesuai seharusnya:UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Dari komentar @andy tampaknya MySQL 8.x.x memperbarui/mengganti auth_socket
untuk caching_sha2_password
. Saya tidak memiliki pengaturan sistem dengan MySQL 8.x.x untuk menguji ini. Namun, langkah-langkah di atas akan membantu Anda memahami masalahnya. Ini jawabannya:
Satu perubahan pada MySQL 8.0.4 adalah bahwa plugin otentikasi default baru adalah 'caching_sha2_password'. 'YOUR_SYSTEM_USER' yang baru akan memiliki plugin autentikasi ini dan Anda dapat masuk dari shell Bash sekarang dengan "mysql -u YOUR_SYSTEM_USER -p" dan memberikan kata sandi untuk pengguna ini pada prompt. Tidak perlu langkah "PERBARUI plugin SET pengguna".
Untuk pembaruan plugin autentikasi default 8.0.4, lihat https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/