Chcete-li se připojit ke vzdálenému serveru MySQL, ať už přímo nebo prostřednictvím tunelu SSH, nemůžete použít unix_socket
autentizační plugin, který vyžaduje místní přístup k souboru unixového soketu v operačním systému DB Server.
unix_socket
plugin je implementován pomocí speciálního typu souboru (unix socket), což je forma meziprocesové komunikace (IPC) v systémech *nix. Umožňuje vašemu klientovi mysql CLI komunikovat s DB a vyžaduje místní přístup k souboru soketu (tj.:/tmp/mysql.sock
). Když se připojíte k zásuvce, unix_socket
plugin (na straně serveru) získá uid uživatele připojeného k soketu (tj. vašeho uživatele) a automaticky vás ověří bez potřeby hesla.
Možná řešení:
Pokud se připojujete k počítači B s uživatelem bez oprávnění root, musíte vytvořit uživatele DB se stejným jménem, jako je název vašeho uživatelského účtu operačního systému bez oprávnění root.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Nyní se můžete připojit k mysql pomocí svého uživatelského účtu a klienta mysql CLI jednoduchým spuštěním:
youruser:~$ mysql
Pokud se chcete připojit k DB s uživatelem root, pak ke spuštění klienta mysql potřebujete přístup k účtu root nebo zásadu sudo přidruženou k vašemu uživateli.
youruser:~$ sudo mysql
Samozřejmě můžete povolit běžný ověřený síťový přístup ke svému kořenovému účtu DB. To může vést k bezpečnostním problémům, takže je lepší omezit to na localhost:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Nyní se můžete přihlásit z jakéhokoli účtu místního operačního systému, pokud můžete ověřit své přihlašovací údaje:
youruser:~$ mysql -u root -p