La déclaration de socket doit être située sous [mysqld]
dans votre my.cnf
. Si vous l'avez déclaré ici et que vous pointez toujours vers un autre endroit tel que tmp
, puis votre my.cnf
le fichier que vous avez édité n'est pas lu au démarrage de mysql ou il y a un autre my.cnf
remplacer celui que vous avez modifié. Il se peut aussi qu'il y ait un second Socket
déclaration dans le même my.cnf
fichier qui remplace celui que vous vous attendez à être lu au démarrage par mysql.
Vous pouvez vérifier son chemin absolu en vous connectant à mysql et en exécutant :
mysql> show variables like 'socket';
+-----------------------------------------+-------------------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------------------+
| socket | /yourpath/mysql.sock |
+-----------------------------------------+-------------------------------+
1 rows in set (0.00 sec)
Il n'y a pas de bon ou de mauvais endroit sur Linux pour enregistrer les sockets, sauf sur des périphériques externes qui sont démontés à tout moment ou des dossiers qui sont vidés de temps en temps. Vous devez configurer où vous voulez le placer.
Pour le client de la console MySQL, il y a quelque chose de plus à considérer :le client semble utiliser la valeur de configuration de socket fournie dans [client] au lieu de [mysqld]. Si vous avez une configuration de plusieurs serveurs MySQL comme moi (4.1, 5.5, 5.7), vous voudrez probablement utiliser une option "--defaults-extra-file" avec le socket écrit dans la partie [client] pour chaque serveur différent. Le socket doit être le même que celui défini dans la partie my.cnf [mysqld] utilisée sur le serveur. Voici un exemple defaults-extra-file.cnf, pensez à changer l'utilisateur, le mot de passe et le socket selon vos besoins - et gardez-le sur les droits d'accès 400 (il y a un mot de passe stocké après tout):
[client]
user = guardian
password = I-4m.Gr00t!
host = localhost
socket = /var/run/mysqld/mysqld-5.6.sock
Cela ne s'applique cependant que si vous utilisez "localhost" comme valeur pour "host". Si vous avez plusieurs adresses locales (127.0.0.2, 127.0.0.3), vous devez laisser la variable de configuration pour "host" sur "localhost" pour utiliser le socket configuré. Sinon, le client se connectera au serveur en utilisant TCP.
Cela a été testé sur mon serveur Debian 9.5 avec MySQL 4.1.22, 5.5.49 et 5.7.19 et leurs clients respectifs.