Pour vous connecter à un serveur MySQL distant, que ce soit directement ou via un tunnel SSH, vous ne pouvez pas utiliser le unix_socket
plugin d'authentification qui nécessite un accès local au fichier socket unix sur le système d'exploitation DB Server.
Le unix_socket
Le plugin est implémenté à l'aide d'un type de fichier spécial (socket unix) qui est une forme de communication inter-processus (IPC) dans les systèmes * nix. Il permet à votre client CLI mysql de parler à la base de données et nécessite un accès local au fichier socket (c'est-à-dire :/tmp/mysql.sock
). Lorsque vous vous connectez au socket, le unix_socket
plugin (côté serveur) obtiendra l'uid de l'utilisateur connecté au socket (c'est-à-dire votre utilisateur) et vous authentifiera automatiquement sans avoir besoin d'un mot de passe.
Solutions possibles :
Si vous vous connectez à la machine B avec un utilisateur non root, vous devez créer un utilisateur de base de données portant le même nom que le nom de votre compte utilisateur de système d'exploitation non root.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Vous pouvez maintenant vous connecter à mysql en utilisant votre compte utilisateur et le client CLI mysql en exécutant simplement :
youruser:~$ mysql
Si vous souhaitez vous connecter à la base de données avec l'utilisateur root, vous devez soit accéder au compte root, soit une stratégie sudo associée à votre utilisateur pour exécuter le client mysql.
youruser:~$ sudo mysql
Vous pouvez évidemment activer un accès réseau authentifié régulier à votre compte racine DB. Cela peut entraîner des problèmes de sécurité, il est donc préférable de le limiter à localhost :
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Vous pouvez désormais vous connecter à partir de n'importe quel compte de système d'exploitation local si vous pouvez authentifier votre connexion :
youruser:~$ mysql -u root -p