За да се свържете с отдалечен MySQL сървър, било то директно или през SSH тунел, не можете да използвате unix_socket
плъгин за удостоверяване, който изисква локален достъп до unix сокет файла на операционната система DB Server.
unix_socket
плъгинът се реализира с помощта на специален тип файл (unix сокет), който е форма на междупроцесна комуникация (IPC) в *nix системи. Той позволява на вашия mysql CLI клиент да говори с DB и изисква локален достъп до сокет файла (т.е.:/tmp/mysql.sock
). Когато се свържете към гнездото, unix_socket
плъгинът (от страна на сървъра) ще получи uid на потребителя, свързан към сокета (т.е. вашия потребител) и автоматично ще ви удостовери, без да е необходима парола.
Възможни решения:
Ако се свържете с машина B с не-root потребител, трябва да създадете потребител на DB със същото име като името на потребителския акаунт на вашата не-root операционна система.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Сега можете да се свържете с mysql, като използвате вашия потребителски акаунт и mysql CLI клиента, като просто изпълните:
youruser:~$ mysql
Ако искате да се свържете с базата данни с root потребител, тогава имате нужда или от достъп до root акаунта, или от sudo политика, свързана с вашия потребител, за да стартирате mysql клиента.
youruser:~$ sudo mysql
Очевидно можете да активирате редовен удостоверен мрежов достъп до вашия DB root акаунт. Това може да доведе до проблеми със сигурността, така че е по-добре да го ограничите до localhost:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Сега можете да влезете от всеки акаунт на локална операционна система, ако можете да удостоверите вашето влизане:
youruser:~$ mysql -u root -p