web-dev-qa-db-fra.com

Impossible de se connecter au serveur MySQL local via le socket '/var/lib/mysql/mysql.sock' (2)

Je reçois le message d'erreur suivant 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 à cette erreur? Quelle pourrait être la raison derrière cela?

231
Atul

Êtes-vous connecté à "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", le connecteur TCP/IP est utilisé. Vous pouvez essayer d’utiliser "127.0.0.1" si le connecteur n’est pas activé/ne fonctionne pas.

203
Jan Thomä

Assurez-vous que votre service mysql est en cours d'exécution

service mysqld start

Ensuite, essayez l’un des suivants:

(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
172
Haja Peer Mohamed H

Si votre fichier my.cnf (généralement dans le dossier etc) est correctement configuré avec

socket=/var/lib/mysql/mysql.sock

vous pouvez vérifier si mysql fonctionne avec la commande suivante:

mysqladmin -u root -p status

essayez de changer votre permission dans le dossier mysql. Si vous travaillez localement, vous pouvez essayer:

Sudo chmod -R 777 /var/lib/mysql/

cela l'a résolu pour moi

26
marimaf

Le serveur MySQL n'est pas en cours d'exécution ou ce n'est pas l'emplacement de son fichier de socket (consultez my.cnf).

20
Dan Grossman

Il est fort probable que mysql.sock n'existe pas dans /var/lib/mysql/.

Si vous trouvez le même fichier à un autre emplacement, cliquez sur le lien suivant:

Par exemple: je l'ai dans /data/mysql_datadir/mysql.sock

Basculez l'utilisateur sur mysql et exécutez-le comme indiqué ci-dessous:

su mysql

ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock

Cela a résolu mon problème

17
sreddy

Dans mon cas, j'ai déplacé le fichier de socket vers un autre emplacement dans /etc/my.cnf 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 vient de la façon dont le client est configuré. Les diagnostics en cours montreront le chemin du socket correct. par exemple ps aux | grep mysqld

Travaux:

mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock

Ne marche pas:

mysql -uroot -p
mysql -uroot -p -hlocalhost

Vous pouvez résoudre ce problème en ajoutant le même socket line dans la section [client] de mysql config.

11
Dejan

Si vous utilisez un système RHEL récent, vous devrez peut-être démarrer mariadb (une base de données open source mysql) à la place 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
11
duhaime

Vérifiez si votre service mysqld est en cours d'exécution ou non. Si ce n'est pas le cas, démarrez le service.

Si votre problème n'est pas résolu, cherchez /etc/my.cnf et modifiez comme suit, où vous voyez une ligne commençant par socket. Faites une sauvegarde de ce fichier avant de faire cette mise à jour. 

socket=/var/lib/mysql/mysql.sock  

Changer en

socket=/opt/lampp/var/mysql/mysql.sock -u root
10
VKGS

Il suffit de modifier /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 reconnectez-vous 

mysql -u utilisateur -p mot de passe base de données -h hôte;

8
minhas23

Assurez-vous de disposer de 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 conduit à 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.

7
Karthik

MariaDB, un fork de MySQL développé par la communauté, est devenu l'implémentation par défaut de MySQL dans de nombreuses distributions.

Alors commencez par commencer,

$ Sudo systemctl start mariadb

Si cela échoue, essayez plutôt,

$ Sudo systemctl start mysqld

Ensuite, pour démarrer mysql,

$ mysql -u root -p

À partir d’aujourd’hui, le paquet dans Fedora s’appelle mariadb Dans Ubuntu, il s’appelle mariadb-server.

Donc, vous devrez peut-être l'installer s'il n'est pas déjà installé sur votre système.

5
Gayan Weerakutti

Voici ce qui a fonctionné pour moi:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
5
User

Veuillez vérifier si un autre service mysql est en cours d'exécution.

4
Kishore Relangi

Assurez-vous que vous avez démarré le serveur:

mysql.server start

Puis connectez-vous avec l'utilisateur root:

mysql -uroot
4
Deniz Ozger

essayer

echo 0 > /selinux/enforce
3
dvin

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, ce qui est si important si le redémarrage de mariadb.service est échoué

chown -R mysql: mysql/var/lib/mysql/*

chmod -R 700/var/lib/mysql/*

3
Mohsen Beiranvand

Si votre mysql fonctionnait auparavant et qu'il s'est arrêté brusquement, il vous suffit de "redémarrer" le serveur.

Était confronté à ce problème sur mon CentPS VPS .->

Était constamment

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)

J'ai essayé toutes les techniques, puis le redémarrage du serveur a résolu les problèmes ->

shutdown -r now

J'espère que cela t'aides !!

2
Shashank Agarwal

Assurez-vous que vous avez correctement installé le serveur MySQL. J'ai rencontré cette erreur plusieurs fois et je pense que le débogage est compliqué à partir du socket. Je veux dire qu'il pourrait être plus facile de le réinstaller.

Si vous utilisez CentOS 7, voici comment l’installer correctement:

Tout d’abord, ajoutez la source de la communauté mysql
yum 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

2
Zernel

Commencez par entrer "service mysqld start" et connectez-vous

2
hPrasad

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 ~ $

Donc vous devez 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 ~ $
1
Eric Leschinski

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.sock' (2)

Et aucun fichier mysql.sock n'existait.

Cette solution a résolu mon problème et mysql était à nouveau opérationnel:

Connectez-vous en tant que root:

Sudo su -

Courir:

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 opérationnel.

J'espère que cela peut aider quelqu'un d'autre aussi.

1
bharald

Notez que bien que mysql lit les informations sur l’emplacement du fichier de socket dans le fichier my.cnf, le programme mysql_secure_installation ne semble pas le faire parfois correctement.

Donc, si vous êtes comme moi et que vous mélangez les choses au moment de l'installation, vous pourriez vous retrouver dans une situation où vous pouvez vous connecter à la base de données avec mysql, mais la chose ne peut être sécurisée (n'utilisez pas ce script de toute façon).

Pour résoudre ce problème, la suggestion de sreddy fonctionne bien: créez un lien symbolique à partir de l'endroit où le script s'attend à ce que le socket soit réellement. Exemple:

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

(J'utilise/tmp/comme emplacement par défaut pour les sockets)

1
Ellert van Koperen

C'est 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 modifié) l'hébergement Amazon DB, vous aurez plutôt besoin de ce nom d'hôte!

Je devais désactiver explicit_defaults_for_timestamp à partir de my.cnf.

0
powtac

Si vous êtes dans le shell 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 administrateur du projet.

0
Chetabahana

C'est un problème si vous manquez d'espace disque .. La solution consiste à libérer de l'espace sur le disque dur.

S'il vous plaît lisez plus pour avoir l'explication:

Si vous utilisez MySQL sous LINUX, vérifiez l’espace libre sur le disque dur à l’aide de 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 ne pourrait pas le réaliser car le manque d’espace.

Si vous donnez périodiquement la commande ls dans le répertoire mysql (openSUSE 11.1 se trouve dans/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 fichier mysql.sock apparaissant et disparaissant souvent (vous devez essayer d'allouer avec le ls pour frapper une instance avec le fichier mysql.sock dans le dossier).

Cela est dû à un espace disque insuffisant.

J'espère que j'aiderai certaines personnes !!!! Merci!

0
c.chasapis

Dans mon cas, j'importais une nouvelle base de données et je ne pouvais plus me connecter par la suite. Finalement, j'ai réalisé que c'était un problème d'espace. 

Ainsi, vous pouvez supprimer la dernière base de données et développer votre disque dur ou ce que j'ai fait, restauré un instantané de ma machine virtuelle.

Juste au cas où quelqu'un pense que c'est utile

0
Evan

Cela a fonctionné pour moi avec les changements suivants

Quel que soit le chemin d'accès au socket mentionné dans [mysqld] et identique dans [client] dans my.cnf

[mysqld] socket =/var/lib/mysql/mysql.sock 

[client] socket =/var/lib/mysql/mysql.sock

0
minhas23

a rencontré ce problème en essayant de connecter mysql dans le client SSH, l’ajout du chemin de socket à la commande a été utile lorsque la commutation entre les sockets est nécessaire.

> mysql -u user -p --socket=/path/to/mysql5143.sock
0
Jaak Kütt

Essayez d'abord 2, 3 solutions. L'erreur est stil popup & Si vous ne pouvez pas trouver /var/lib/mysql/mysql.sock 

find /var/ -name mysql.sock

Vérifiez l'espace disponible dans/var / 

df

Si le répertoire est plein, supprimez certains fichiers/répertoires inutiles

rm /var/cache/*

Votre problème sera probablement réglé maintenant.

0
Sadee