GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est l'emplacement correct du fichier mysql.sock sous Linux

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.


Linux
  1. Qu'est-ce qu'un numéro d'inode sous Linux ?

  2. Linux - Quelles sont les différentes façons de définir les autorisations de fichiers, etc. sur Gnu/linux ?

  3. Linux - Quels systèmes de fichiers sur Linux stockent l'heure de création ?

  4. Comment trouver l'emplacement du fichier de configuration MySQL actuellement utilisé sous Linux

  5. Quelle est la bonne façon d'installer jdk sur linux

Introduction au système de fichiers Linux

Qu'est-ce qu'umask sous Linux ?

Qu'est-ce que le Shell sous Linux ?

Qu'est-ce qu'un fichier .bashrc sous Linux ?

Comment puis-je trouver l'emplacement MySQL my.cnf

Quel est l'effet de la définition d'un socket Linux - haute priorité ?