Om verbinding te maken met een externe MySQL-server, rechtstreeks of via een SSH-tunnel, kunt u de unix_socket
niet gebruiken authenticatie-plug-in die lokale toegang tot het unix-socketbestand op het DB Server-besturingssysteem vereist.
De unix_socket
plug-in is geïmplementeerd met behulp van een speciaal type bestand (unix-socket) dat een vorm van inter-procescommunicatie (IPC) is in *nix-systemen. Het staat uw mysql CLI-client toe om met de DB te praten en het vereist lokale toegang tot het socketbestand (d.w.z.:/tmp/mysql.sock
). Wanneer u verbinding maakt met de socket, wordt de unix_socket
plug-in (server-side) krijgt de uid van de gebruiker die op de socket is aangesloten (d.w.z. uwgebruiker) en authenticeert u automatisch zonder dat u een wachtwoord nodig heeft.
Mogelijke oplossingen:
Als u verbinding maakt met Machine B met een niet-rootgebruiker, moet u een DB-gebruiker maken met dezelfde naam als de naam van uw niet-rootbesturingssysteemgebruikersaccount.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Nu kunt u verbinding maken met mysql met uw gebruikersaccount en de mysql CLI-client door simpelweg het volgende uit te voeren:
youruser:~$ mysql
Als je verbinding wilt maken met de database met de rootgebruiker, dan heb je toegang nodig tot het root-account of een sudo-beleid dat aan je gebruiker is gekoppeld om de mysql-client uit te voeren.
youruser:~$ sudo mysql
U kunt uiteraard reguliere geauthenticeerde netwerktoegang tot uw DB-rootaccount inschakelen. Dit kan leiden tot beveiligingsproblemen, dus het is beter om het te beperken tot localhost:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
U kunt nu inloggen vanaf elk lokaal besturingssysteemaccount als u uw login kunt verifiëren:
youruser:~$ mysql -u root -p