For at oprette forbindelse til en ekstern MySQL-server, det være sig direkte eller gennem en SSH-tunnel, kan du ikke bruge unix_socket
autentificeringsplugin, som kræver lokal adgang til unix-socket-filen på DB Server-operativsystemet.
unix_socket
plugin er implementeret ved hjælp af en speciel type fil (unix-socket), som er en form for inter-process communication (IPC) i *nix-systemer. Det giver din mysql CLI-klient mulighed for at tale med DB'en, og det kræver lokal adgang til socket-filen (dvs.:/tmp/mysql.sock
). Når du forbinder til stikket, vil unix_socket
plugin (server-side) vil få brugerens uid, der er tilsluttet til stikkontakten (dvs. din bruger) og vil automatisk godkende dig uden behov for en adgangskode.
Mulige løsninger:
Hvis du opretter forbindelse til Machine B med en ikke-root-bruger, skal du oprette en DB-bruger med samme navn som dit ikke-root-operativsystembrugerkontonavn.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Nu kan du oprette forbindelse til mysql ved hjælp af din brugerkonto og mysql CLI-klienten ved blot at køre:
youruser:~$ mysql
Hvis du vil oprette forbindelse til DB'en med root-brugeren, skal du enten have adgang til root-kontoen eller en sudo-politik knyttet til din bruger for at køre mysql-klienten.
youruser:~$ sudo mysql
Du kan naturligvis aktivere almindelig autentificeret netværksadgang til din DB root-konto. Dette kan føre til sikkerhedsproblemer, så det er bedre at begrænse det til localhost:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Nu kan du logge ind fra en hvilken som helst lokal operativsystemkonto, hvis du kan godkende dit login:
youruser:~$ mysql -u root -p