Untuk terhubung ke server MySQL jarak jauh, baik secara langsung atau melalui terowongan SSH, Anda tidak dapat menggunakan unix_socket
plugin otentikasi yang memerlukan akses lokal ke file soket unix pada sistem operasi Server DB.
unix_socket
plugin diimplementasikan menggunakan jenis file khusus (unix socket) yang merupakan bentuk komunikasi antar-proses (IPC) dalam sistem *nix. Ini memungkinkan klien mysql CLI Anda untuk berbicara dengan DB dan memerlukan akses lokal ke file soket (yaitu:/tmp/mysql.sock
). Saat Anda terhubung ke soket, unix_socket
plugin (sisi server) akan membuat uid pengguna terhubung ke soket (yaitu:pengguna Anda) dan secara otomatis akan mengautentikasi Anda tanpa memerlukan kata sandi.
Kemungkinan solusi:
Jika Anda terhubung ke Mesin B dengan pengguna non-root, Anda perlu membuat pengguna DB dengan nama yang sama dengan nama akun pengguna sistem operasi non-root Anda.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Sekarang Anda dapat terhubung ke mysql menggunakan akun pengguna Anda dan klien mysql CLI hanya dengan menjalankan:
youruser:~$ mysql
Jika Anda ingin terhubung ke DB dengan pengguna root, maka Anda memerlukan akses ke akun root atau kebijakan sudo yang terkait dengan pengguna Anda untuk menjalankan klien mysql.
youruser:~$ sudo mysql
Anda jelas dapat mengaktifkan akses jaringan terotentikasi reguler ke akun root DB Anda. Hal ini dapat menyebabkan masalah keamanan sehingga lebih baik membatasinya pada localhost:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Sekarang Anda dapat login dari akun sistem operasi lokal mana pun jika Anda dapat mengotentikasi login Anda:
youruser:~$ mysql -u root -p