För att ansluta till en fjärransluten MySQL-server, vare sig det är direkt eller genom en SSH-tunnel, kan du inte använda unix_socket
autentiseringsplugin som kräver lokal åtkomst till unix-socketfilen på DB Server-operativsystemet.
unix_socket
plugin implementeras med en speciell typ av fil (unix-socket) som är en form av inter-process communication (IPC) i *nix-system. Den tillåter din mysql CLI-klient att prata med DB:n och den kräver lokal åtkomst till socketfilen (dvs:/tmp/mysql.sock
). När du ansluter till uttaget, unix_socket
plugin (serversidan) kommer att få användarens uid som är ansluten till uttaget (dvs. din användare) och kommer automatiskt att autentisera dig utan behov av ett lösenord.
Möjliga lösningar:
Om du ansluter till Machine B med en icke-root-användare, måste du skapa en DB-användare med samma namn som ditt användarkontonamn för icke-root-operativsystemet.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Nu kan du ansluta till mysql med ditt användarkonto och mysql CLI-klienten genom att helt enkelt köra:
youruser:~$ mysql
Om du vill ansluta till DB med root-användaren behöver du antingen tillgång till root-kontot eller en sudo-policy som är kopplad till din användare för att köra mysql-klienten.
youruser:~$ sudo mysql
Du kan uppenbarligen aktivera vanlig autentiserad nätverksåtkomst till ditt DB-rotkonto. Detta kan leda till säkerhetsproblem så det är bättre att begränsa det till localhost:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Nu kan du logga in från vilket lokalt operativsystemkonto som helst om du kan autentisera din inloggning:
youruser:~$ mysql -u root -p