Impossible de se connecter au serveur MySQL local via le socket ' / var / lib / mysql / mysql.chaussette' (2)
Je reçois l'erreur suivante lorsque j'essaie de me connecter à mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Existe-t-il une solution pour cette erreur? Quelle pourrait être la raison derrière elle?
30 réponses
Vous connectez-vous à "localhost" ou "127.0.0.1"? J'ai remarqué que lorsque vous vous connectez à "localhost" le connecteur est utilisé, mais lorsque vous vous connectez à "127.0.0.1" TCP/IP de connecteur est utilisé. Vous pouvez essayer d'utiliser "127.0.0.1" si le connecteur n'est pas permis de travail.
Assurez-vous que votre service mysql est en cours d'exécution
service mysqld start
Ensuite, essayez l'une des options suivantes:
(si vous n'avez pas défini de mot de passe pour mysql)
mysql -u root
Si vous avez déjà défini le mot de passe
mysql -u root -p
Si votre fichier Mon.cnf (généralement dans le dossier etc) est correctement configuré avec
socket=/var/lib/mysql/mysql.sock
, Vous pouvez vérifier si mysql est en cours d'exécution avec la commande suivante:
mysqladmin -u root -p status
Essayez de changer votre autorisation pour le dossier mysql. Si vous travaillez localement, vous pouvez essayer:
sudo chmod -R 777 /var/lib/mysql/
Qui l'a résolu pour moi
Le serveur MySQL n'est pas en cours d'exécution, ou ce n'est pas l'emplacement de son fichier socket (vérifiez mon.cnf).
Plus susceptibles mysql.sock
n'existe pas dans /var/lib/mysql/
.
Si vous trouvez le même fichier dans un autre emplacement, alors le lien symbolique:
Ex: je l'ai dans /data/mysql_datadir/mysql.sock
Basculez l'utilisateur vers mysql et exécutez comme mentionné ci-dessous:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
Qui a résolu mon problème
Dans mon cas, j'ai déplacé le fichier socket vers un autre emplacement à l'intérieur de /etc/my.cnf
à partir de /var/lib/mysql/mysql.sock
à /tmp/mysql.sock
Même après avoir redémarré le service mysqld, je vois toujours le message d'erreur lorsque j'essaie de me connecter.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Le problème est avec la façon dont le client est configuré. L'exécution de diagnostics montrera réellement le chemin de socket correct. par exemple ps aux | grep mysqld
Fonctionne:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
Ne fonctionne pas:
mysql -uroot -p
mysql -uroot -p -hlocalhost
Vous pouvez corriger ce problème en ajoutant le même socket ligne sous [client]
section dans mysql config.
Si vous êtes sur un RHEL récent, vous devrez peut-être démarrer mariadb (une base de données mysql open source) au lieu de la base de données mysql:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
Vous devriez alors pouvoir accéder à mysql de la manière habituelle:
mysql -u root -p
Vérifiez si votre service mysqld est en cours d'exécution ou non, sinon, démarrez le service.
Si votre problème n'est pas résolu, recherchez /etc/my.cnf
et modifiez comme suit, où vous voyez une ligne commençant par socket
. Faire une sauvegarde de ce fichier avant de faire cette mise à jour.
socket=/var/lib/mysql/mysql.sock
Changer pour
socket=/opt/lampp/var/mysql/mysql.sock -u root
Il suffit d'éditer /etc/my.cnf
Ajouter les lignes suivantes à my.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Redémarrez mysql et connectez-vous à nouveau
Mysql -u utilisateur -p mot de passe de la base de données -h hôte;
Assurez-vous d'avoir suffisamment d'espace dans /var
. Si Mysql demon n'est pas capable d'écrire des informations supplémentaires sur le lecteur, le serveur mysql ne démarre pas et cela entraîne l'erreur Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Pensez à utiliser
expire_logs_days = 10
max_binlog_size = 100M
Cela vous aidera à réduire l'utilisation du disque.
Voici ce qui a fonctionné pour moi:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
MariaDB, un fork développé par la communauté de MySQL, est devenu L'implémentation par défaut de MySQL dans de nombreuses distributions.
Donc d'abord vous devriez commencer,
$ sudo systemctl start mariadb
Si cela échoue plutôt essayer,
$ sudo systemctl start mysqld
Puis pour démarrer mysql,
$ mysql -u root -p
, dès aujourd'hui, dans Fedora le paquet est nommé mariadb
Et dans Ubuntu, il s'appelle mariadb-server
.
Vous devrez peut-être l'installer si ce n'est pas déjà installé dans votre système.
Veuillez vérifier si un autre service mysql est en cours d'exécution.
Assurez-vous que vous avez démarré le serveur:
mysql.server start
Puis connectez-vous avec l'utilisateur root:
mysql -uroot
Si vous modifiez des fichiers dans/var/lib / mysql [ comme copier ou remplacer cela ], vous devez définir le propriétaire des fichiers sur mysql c'est si important si mariadb.le redémarrage du service a été faild
Chown-R mysql: mysql / var / lib / mysql / *
Chmod-R 700 / var / lib / mysql/ *
Si votre mysql fonctionnait auparavant et s'est arrêté soudainement, il suffit de "redémarrer" le serveur.
Était confronté à ce problème sur mon VPS CentOS.->
Obtenait constamment
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
Essayé toutes les techniques, enfin redémarrer le serveur a corrigé les problèmes - >
shutdown -r now
Espérons que cela aide !!
Veuillez vous assurer que vous avez installé le serveur MySQL correctement, j'ai rencontré cette erreur plusieurs fois et je pense qu'il est compliqué de déboguer à partir du socket, je veux dire qu'il pourrait être plus facile de le réinstaller.
Si vous utilisez CentOS 7, Voici la bonne façon de l'installer:
Tout d'abord, ajoutez la source de la communauté mysqlyum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Ensuite, vous pouvez l'installer par yum install mysql-community-server
Démarrez-le avec systemctl: systemctl start mysqld
Mon problème était que j'ai installé mysql avec succès et cela a bien fonctionné.
, Mais un jour, la même erreur s'est produite.
impossible de se connecter au serveur MySQL local via le socket ' / var / lib / mysql / mysql.chaussette' (2)
Et pas de mysql.fichier chaussette existait.
Cette solution a résolu mon problème et mysql a été de nouveau opérationnel:
Connectez - vous en tant que root:
sudo su -
Exécuter:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
Test en tant que root:
mysql -u root -p
Mysql devrait maintenant être activé et exécuter.
J'espère que cela peut aider quelqu'un d'autre aussi.
Notez que si mysql lit les informations de l'emplacement du socketfile à partir du my.fichier cnf, le programme mysql_secure_installation semble ne pas le faire correctement parfois.
Donc, si vous êtes comme moi et mélangez les choses au moment de l'installation, vous pourriez vous retrouver dans la situation où vous pouvez vous connecter à la base de données avec mysql, mais la chose ne peut pas être sécurisée (ne pas utiliser ce script de toute façon).
Pour résoudre ce la suggestion de sreddy fonctionne bien: faire un softlink de où le script s'attendrait à ce que le socket soit là où il se trouve réellement. Exemple:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(j'utilise /tmp / comme emplacement par défaut pour les sockets)
Une façon de reproduire cette erreur: si vous vouliez vous connecter à un serveur étranger mais vous connecter à un serveur local inexistant:
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
Vous devez donc spécifier l'hôte comme ceci:
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
Cela peut être une suggestion stupide mais assurez-vous à 100% que votre base de données est toujours hébergée sur localhost. Par exemple, si un administrateur réseau a choisi (ou changé pour) Amazon DB hosting, vous aurez besoin de ce nom d'hôte à la place!
A rencontré ce problème en essayant de connecter mysql dans le client SSH, trouvé en ajoutant le chemin de socket à la commande utile lors de la commutation entre les sockets est nécessaire.
> mysql -u user -p --socket=/path/to/mysql5143.sock
Cela a fonctionné pour moi avec les changements suivants
Quel que soit le chemin pour socket est mentionné dans [mysqld] et même dans [client] dans my.cnf et redémarrer mysql
[mysqld] socket=/var/lib/mysql/mysql.chaussette
[client] socket=/var/lib/mysql/mysql.chaussette
Ceci est un problème si vous manquez d'espace disque. La Solution est de libérer de l'espace du disque dur.
Veuillez lire plus pour avoir l'explication:
Si vous utilisez MySQL sous LINUX, Vérifiez l'espace libre du disque dur avec la commande disk free:
df
Si vous obtenez quelque chose comme ça :
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
Alors c'est le problème et maintenant vous avez la solution!
Depuis mysql.sock veut être créé dans le dossier mysql qui est presque toujours sous le dossier racine n'a pas pu y parvenir en raison du manque d'espace.
Si vous donnez périodiquement la commande ls sous le répertoire mysql (à openSUSE 11.1 est à / var / lib / mysql), vous obtiendrez quelque chose comme:
hostname:/var/lib/mysql #
.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
Le mysql.chaussette fichier apparaissant et disparaissant souvent (vous devez essayer d'attribuer les ls de frapper un exemple avec mysql.chaussette fichier sur dossier).
Ceci est causé par un espace disque insuffisant.
J'espère que je vais aider certaines personnes!!!! Merci!
Essayez d'abord 2, 3 solutions. L'erreur est stil popup & si vous ne trouvez pas /var/lib/mysql/mysql.sock
find /var/ -name mysql.sock
Vérifier l'espace disponible dans /var/
df
Si le répertoire est plein, supprimez certains fichiers/répertoires inutilisés
rm /var/cache/*
Probablement votre problème sera trié maintenant.
Si vous êtes dans la coquille de sf.net, essayez:
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
Modifiez {LETTER} et {GROUP ID} comme indiqué dans votre base de données MySQL du profil d'administrateur du projet.
Il suffit de pleuvoir sur le même problème - et voici comment je l'ai abordé.
En supposant que mysqld est en cours d'exécution, le problème pourrait simplement être le client mysql ne sachant pas où chercher le fichier socket.
La façon la plus simple d'y remédier consiste à ajouter la ligne suivante au fichier profile .my.cnf de votre utilisateur (sous linux qui se trouve généralement sous / home / myusername):
socket=<path to the mysql socket file>
Si vous n'avez pas de fichier .my.cnf, créez-en un contenant suivant:
[mysql]
socket=<path to the mysql socket file>
Dans mon cas, puisque j'ai déplacé le dossier de données par défaut mysql (/var/lib/mysql) dans un emplacement différent (/data / mysql), j'ai ajouté à. my. cnf ce qui suit:
[mysql]
socket=/data/mysql/mysql.sock
J'espère que cela aide.