Um eine Verbindung zu einem Remote-MySQL-Server herzustellen, sei es direkt oder über einen SSH-Tunnel, können Sie den unix_socket
nicht verwenden Authentifizierungs-Plugin, das lokalen Zugriff auf die Unix-Socket-Datei auf dem DB-Server-Betriebssystem erfordert.
Der unix_socket
Das Plugin wird mithilfe eines speziellen Dateityps (Unix-Socket) implementiert, der eine Form der Interprozesskommunikation (IPC) in *nix-Systemen darstellt. Es ermöglicht Ihrem mysql-CLI-Client, mit der Datenbank zu kommunizieren, und es erfordert lokalen Zugriff auf die Socket-Datei (z. B.:/tmp/mysql.sock
). Wenn Sie sich mit dem Socket verbinden, wird der unix_socket
plugin (serverseitig) erhält die UID des Benutzers, der mit dem Socket verbunden ist (d. h. Ihr Benutzer) und authentifiziert Sie automatisch, ohne dass ein Passwort erforderlich ist.
Mögliche Lösungen:
Wenn Sie mit einem Nicht-Root-Benutzer eine Verbindung zu Maschine B herstellen, müssen Sie einen DB-Benutzer mit dem gleichen Namen wie der Name Ihres Nicht-Root-Betriebssystem-Benutzerkontos erstellen.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Jetzt können Sie mit Ihrem Benutzerkonto und dem mysql-CLI-Client eine Verbindung zu mysql herstellen, indem Sie einfach Folgendes ausführen:
youruser:~$ mysql
Wenn Sie sich mit dem Root-Benutzer mit der Datenbank verbinden möchten, benötigen Sie entweder Zugriff auf das Root-Konto oder eine sudo-Richtlinie, die Ihrem Benutzer zugeordnet ist, um den mysql-Client auszuführen.
youruser:~$ sudo mysql
Sie können natürlich den regulären authentifizierten Netzwerkzugriff auf Ihr DB-Root-Konto aktivieren. Dies kann zu Sicherheitsproblemen führen, daher ist es besser, es auf localhost:
zu beschränkenGRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Jetzt können Sie sich von jedem lokalen Betriebssystemkonto aus anmelden, wenn Sie Ihr Login authentifizieren können:
youruser:~$ mysql -u root -p