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


143

J'ai installé le serveur MySQL et j'essaye de me connecter, mais j'obtiens l'erreur:

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

J'ai vérifié mon répertoire / tmp et il n'y a pas de mysql.sock. Je ne trouve mysql.sock nulle part. J'ai lu que ça pourrait être dans

    /var/lib/mysql/mysql.sock

Mais j'ai vérifié là aussi et il n'y a même pas de répertoire mysql, seulement un élément de postfix dans / lib. Quelqu'un pourrait-il m'aider avec ce problème?


2
Je travaille sur Mac OS X
user3344382

Bonjour, pouvez-vous coller la commande que vous utilisez pour vous connecter? Avez-vous également lancé MySQL?
Mark Butler

@MarkButler J'utilise cette commande: / usr / local / mysql / bin / mysql
user3344382

à droite, c'est juste que le serveur ne fonctionnait pas. Cependant, je ne peux toujours pas comprendre où est mysql.sock, peut-il y avoir d'autres endroits cachés où il peut résider?
user3344382

Cette erreur est très générale et peut être due à diverses raisons. Pour un résumé soigné, voir ici: medium.com/@7anac/…
Janac Meena

Réponses:


272

Essayez de démarrer le serveur MySQL:

mysql.server start


44
ERREUR! Le serveur s'est arrêté sans mettre à jour le fichier PID
bastianwegge

1
@wegginho Solution possible à votre message d'erreur si vous avez installé MySQL via une erreur PID
Casey Robinson

j'ai oublié de démarrer les services mysql!
GeekHades

1
@bastianwegge essayez de vérifier le fichier d'erreur dans /usr/local/var/mysql/USERNAME.local.err dans mon cas, j'ai dû supprimer /tmp/mysql.sock puis redémarrer en utilisantmysql.server start
Josh Bradley

61

J'ai eu la même question après la mise à jour d'OS X Yosemite, eh bien la solution est assez simple, vérifiez les préférences du système -> mysql, le statut était STOP. Redémarrez-le et cela fonctionne bien sur mon mac maintenant.


1
Merci beaucoup @keren si simple, j'ai perdu 45 bonnes minutes à modifier les paramètres de mon fichier my.cnf alors que c'était le seul problème.
kandroidj

A travaillé pour moi aussi merci, je n'avais pas d'idée en termes d'installation DMG.
Rameshwar Vyevhare

Cela ne m'a malheureusement pas aidé
simhumileco

Simple et génial!
Desmond DAI

6
Euh, quoi? Pourquoi les préférences système d'OSX auraient-elles une option MySQL?
AlxVallejo

45

Pour MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Depuis https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

MISE À JOUR: Chaque fois que mon ordinateur redémarre, je dois entrer cette commande, j'ai donc créé un raccourci.

Procédez comme suit dans le type de terminal:

~: vi ~/.profile

Ajouter

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

Sauver.

En type de terminal:

~: ... pour générer la configuration .profile.

Maintenant, dans le terminal, vous pouvez simplement taper

~: sockit

1
Impressionnant. Juste le correctif que je cherchais.
JoshHighland

1
Je suis revenu plusieurs fois sur ce post et cela fonctionne toujours.
Trey Copeland

Mis à jour vers mysql 5.7.1 en dehors de MAMP et rencontré l'erreur. Cela a résolu le problème pour moi
David

Si vous êtes sur un livre Mac et que vous voyez MAMP, cela fonctionne
kelrob-dev

32

La commande suivante a résolu mon problème:

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start

1
Après avoir cherché pendant 3 heures, cela a résolu mon problème. Je viens d'installer mysql via homebrew avec brew install mysqlmais rien des commandes homebrew ne m'a dit de fonctionner correctement. Cela a fait disparaître tous les problèmes ... Merci !! Quelle est exactement cette première ligne que vous avez écrite? Qu'est-ce que ça veut dire?
mesqueeb

Merci, fonctionne bien!
Nirojan Selvanathan

1
Hé pour moi c'était: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura

chown -R changer le propriétaire -R récursivement
Hos Mercury

Un 10.13.1 et un homebrew parfaits ont donné cette erreur lors de l'installation de mariadb (10.2.10). Ce changement de propriétaire l'a corrigé, donc maintenant sudo brew services start mariadbfonctionne également pour démarrer mariadb au démarrage (pas seulement à la connexion). YAY! Je vous remercie!
iggie

16

Après avoir essayé toutes les solutions, cela n'a fonctionné que pour moi après avoir spécifié l'hôte

mysql -u root -p -h127.0.0.1

lors de la demande de mot de passe

Enter password:

appuyez sur Entrée

et cela fonctionnera, si tout va bien comme ci-dessus.


2
J'ai configuré mysql avec un conteneur Docker en utilisant Docker pour Mac et mappe son port 3306 sur Mac. Sans ajouter le -h 127.0.0.1, il invite toujours Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); après avoir ajouté l'argument, cela fonctionne bien.
Evi Song

1
C'est parce que passer par 127.0.0.1 n'utilise pas le socket, je pense. Plus d'une solution de contournement étroite.
Lucas Morgan

1
Courir mysql -u root -h127.0.0.1 sans le -pdrapeau a fonctionné pour moi, car lorsque j'ai installé MySQL, je n'ai jamais exécuté la mysql_secure_installationcommande. Je crois comprendre que dans ce cas, l'installation par défaut sans mot de passe requis.
Richie Thomas

1
A travaillé comme un charme!
Panduka DeSilva

10

Après avoir lutté pendant des heures, la seule chose qui a fonctionné était

sudo mysql.server start

Ensuite, effectuez une installation sécurisée avec

mysql_secure_installation 

Puis connectez-vous à la base de données via

mysql -uroot -p

Mysql est installé via homebrew et la version est

Server version: 5.7.21 Homebrew

La spécification de la version peut être utile car la solution peut être différente en fonction de la version.


9

Dans votre fichier de configuration mysql, qui est présent dans /etc/my.cnfapportez les modifications ci-dessous, puis redémarrez le mysqldprocessus dameon

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

Vérifiez également ce fil connexe

Impossible de se connecter au serveur MySQL local via le socket '/tmp/mysql.sock


il n'y a pas de fichier my.cnf dans le répertoire / etc. Je pense que je peux créer ce fichier manuellement, mais comme je l'ai dit, il n'y a pas de répertoire mysql dans / var / lib, comment la socket peut-elle être là?
user3344382

Vérifiez le fil de discussion associé que j'ai publié et vérifiez si votre serveur mysql est en cours d'exécution ou non.
Rahul

J'ai trouvé le fichier dans /etc/mysql/my.cnf
Devon

si vous avez installé avec une infusion, vous devez l'utiliser /tmp/mysql.sockcomme emplacement de chaussette
Mark Shust à M.academy

8

Après avoir résolu mon problème:

Vérifiez où votre serveur MySQL écoute: netstat -nlp S'il écoute TCP, utilisez 127.0.0.1 lors de la connexion à la base de données au lieu de "localhost"

Consultez la documentation MySQL ici


cela semble fonctionner pour moi et prouve que mysql est vivant mais pourquoi ne puis-je pas me connecter au socket local?
Colin D

8

Essayez ceci, cela a fonctionné pour moi.

sudo /usr/local/mysql/support-files/mysql.server start


Pourquoi ce chemin? en utilisant la commande "where is mysql" (MAC OS) donnant la sortie /usr/local/mysql/bin/. Comment identifier ce chemin sous Mac?
Vineeth Bhaskaran

Ya, le chemin change en conséquence
vasanth vasu

4

Si vous utilisez XAMPP sous Mac OS X et avez installé MySQL avec Homebrew, vous pouvez avoir ce problème. Dans la fenêtre du gestionnaire XAMPP, allez dans Gérer les serveurs et sélectionnez MySQL, puis cliquez sur Configurer et ouvrez le fichier de configuration, là vous avez le chemin du fichier de socket, mettez le chemin dans votre configuration d'hôte MySQL et cela devrait fonctionner.

C'est quelque chose comme ça:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

puis, par exemple dans Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

J'espère que cela t'aides.


3

Premièrement, savoir où se trouvait le répertoire de données pour moi était la clé. /usr/local/var/mysql Ici, il y avait au moins un fichier avec l'extension .err précédé du nom de ma machine locale. Il contenait toutes les informations dont j'avais besoin pour diagnostiquer.

Je pense que j'ai foiré en installant d'abord mysql 8. Mon application n'est pas compatible avec elle, j'ai donc dû revenir à la version 5.7

Ma solution qui a fonctionné pour moi allait à /usr/local/etc/my.cnf

Trouvez cette ligne si elle est là. Je pense que son mysql 8 est lié:

mysqlx-bind-address = 127.0.0.1 

Supprimez-le car dans le mysql 5.7, il ne l'aime pas dans le journal des erreurs

Ajoutez également cette ligne là-dedans si ce n'est pas là sous l'adresse de liaison.

socket=/tmp/mysql.sock

Allez dans le /tmprépertoire et supprimez tous les fichiers mysql.sock qui s'y trouvent. Au démarrage du serveur, il recréera les fichiers chaussette

Videz le répertoire de données avec mySQL à l'état arrêté. Le mien l'était /usr/local/var/mysql. C'est le même endroit où se trouvent les journaux

De là j'ai couru

>mysqld --initialize

Ensuite, tout a commencé à fonctionner ... cette commande vous donnera un mot de passe aléatoire à la fin. Enregistrez ce mot de passe pour l'étape suivante

Lancer ceci pour attribuer mon propre mot de passe.

>mysql_secure_installation 

Tous les deux

>brew services stop mysql@5.7

et

>mysql.server start

travaillent maintenant. J'espère que cela t'aides. C'est environ 3 heures d'essais et d'erreurs.


3

Tapez d'abord ceci:

brew services start mysql

Ensuite ceci -:

mysql -uroot

0

J'ai passé beaucoup de temps à faire cela, je veux mettre mon application django sur mon serveur et quand je lance, python manage.py migratej'ai rencontré ces questions

Et!! J'ai mis cela ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Cela a fonctionné enfin!



0

L'arrêt et le démarrage du serveur mysql à partir du terminal ont résolu mon problème. Voici les cmds pour arrêter et démarrer le serveur mysql sous MacOs.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Remarque: le redémarrage des services à partir de la préférence système Mac n'a pas résolu le problème sur mon mac. Essayez donc de redémarrer à partir du terminal.


0

Si vous utilisez un macOS, il est simplement plus facile de vérifier d'abord, allez dans «Préférences système» et de voir si MySQL est en cours d'exécution ou non.


-1

Pour CentOS, le fichier pour initier mysql se trouve ici:

/etc/init.d/mysqld start
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.