J'ai récemment essayé d'installer MySQL avec homebrew ( brew install mysql
) et lorsque j'essaye de l'exécuter, j'obtiens l'erreur suivante:
ERREUR 2002 (HY000): impossible de se connecter au serveur MySQL local via le socket '/tmp/mysql.sock' (2)
Il n'y a /tmp/mysql.sock
ni ni a /var/lib/mysql.sock
.
J'ai cherché et n'ai trouvé aucun mysql.sock
fichier.
Comment puis-je réparer cela?
mysqld
pour vérifier les choses et s'assurer que MySQL s'est correctement arrêté la dernière fois. S'il y avait un arrêt «sale» (par exemple, si une batterie d'ordinateur portable force un arrêt du système), cela devrait le nettoyer. Ensuite , vous pouvez commencer à nouveau serveur MySQL:mysql.server start
.Réponses:
Lorsque le serveur fonctionne via
vous devriez voir le socket dans /tmp/mysql.sock . Cependant, le système semble l'attendre dans /var/mysql/mysql.sock . Pour résoudre ce problème, vous devez créer un lien symbolique dans / var / mysql :
Cela a résolu le problème pour moi. Maintenant, mon phpMyAdmin fonctionne correctement avec localhost et 127.0.0.1 .
Le mérite revient à Henry
la source
mysql.server start
je reçoisERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid)
. J'avais besoin d'une ancienne version de MySQL, installée viabrew install [email protected]
.mysql.server start
réparé pour moiIl semble que votre serveur mysql ne soit pas démarré. J'exécute généralement la commande d'arrêt, puis je la relance:
Même erreur, et cela fonctionne pour moi.
la source
mysqld &
commentaire ci-dessus, mais je pense que cela ferait probablement la même chose carmysqld stop
je suis presque sûr que dans mon cas, c'était à cause d'un arrêt incorrect.Il me restait quelques répertoires d'une autre installation mysql (8.0), qui n'ont pas été supprimés.
J'ai résolu ce problème en procédant comme suit:
Commencez par désinstaller mysql
Supprimer les dossiers / fichiers qui n'ont pas été supprimés
Réinstallez mysql et liez-le
Activer et démarrer le service
la source
Essayez de vous connecter en utilisant "127.0.0.1" au lieu de "localhost".
la source
1) Si vous pouvez voir "mysql arrêté" lorsque vous exécutez la commande ci-dessous;
2) et si vous pouvez démarrer mysql avec la commande ci-dessous;
ça signifie; mysql est capable de démarrer manuellement, mais il ne démarre pas automatiquement au démarrage du système d'exploitation. L'ajout de mysql aux services résoudra ce problème. Pour ce faire, vous pouvez exécuter la commande ci-dessous;
Après cela, vous pouvez redémarrer votre système d'exploitation et essayer de vous connecter à mysql pour voir s'il a démarré automatiquement. J'ai fait la même chose et j'ai cessé de recevoir l'erreur ci-dessous;
J'espère que ça aide.
la source
Le fichier
/tmp/mysql.sock
est probablement un canal nommé, puisqu'il se trouve dans un dossier temporaire. Un tube nommé est un fichier spécial qui n'est jamais stocké de manière permanente.Si nous créons deux programmes et que nous voulons qu'un programme envoie un message à un autre programme, nous pourrions créer un fichier texte. Nous avons un programme qui écrit quelque chose dans le fichier texte et l'autre programme lit ce que notre autre programme a écrit. C'est ce qu'est un tube, sauf qu'il n'écrit pas le fichier sur le disque dur de notre ordinateur, IE ne stocke pas le fichier de manière permanente (comme nous le faisons lorsque nous créons un fichier et le sauvegardons.)
Un socket est exactement le même qu'un tuyau. La différence est que les sockets sont généralement utilisés sur un réseau - entre les ordinateurs. Un socket envoie des informations à un autre ordinateur ou reçoit des informations d'un autre ordinateur. Les tuyaux et les sockets utilisent un fichier temporaire à partager afin de pouvoir «communiquer».
Il est difficile de discerner lequel MySql utilise dans ce cas. Cela n'a pas d'importance cependant.
La commande
mysql.server start
devrait faire exécuter au «serveur» (programme) sa boucle infinie qui créera ce fichier spécial et attendra les modifications (listen
pour les écritures).Après cela, un problème courant peut être que le programme MySql n'a pas l'autorisation de créer un fichier sur votre machine, vous devrez donc peut-être lui donner les privilèges root
la source
mysql.server start
,mysql.server stop
puis j'ai redémarré le service via homebrew avecbrew services start [email protected]
et les choses se sont bien déroulées.Après avoir installé macos mojave, il fallait effacer le dossier mysql sous
/usr/local/var/mysql
, puis le réinstaller viabrew install mysql
sinon des choses liées à la permission se produiraient partout.la source
/usr/local/var/mysql
vous supprimerez également toutes vos bases de données existantes!J'ai eu la même erreur et c'est ce qui m'a aidé:
la source
Juste pour ajouter à ces réponses, dans mon cas, je n'avais pas de serveur mySQL local, il fonctionnait dans un conteneur docker. Le fichier socket n'existe donc pas et ne sera pas accessible pour le client "mysql".
Le fichier sock est créé par mysqld et mysql l'utilise pour communiquer avec lui. Cependant, si votre serveur mySql ne fonctionne pas en local, il n'a pas besoin du fichier sock.
En spécifiant un nom d'hôte / une adresse IP, le fichier chaussette n'est pas nécessaire, par exemple
la source
Étant donné que j'ai passé un certain temps à essayer de résoudre cela et que je suis toujours revenu sur cette page pour rechercher cette erreur, je laisserai ma solution ici en espérant que quelqu'un économise le temps que j'ai perdu. Bien que dans mon cas j'utilise mariadb plutôt que MySql, vous pourrez peut-être encore adapter cette solution à vos besoins.
Mon problème
est le même, mais ma configuration est un peu différente (mariadb au lieu de mysql):
Installé mariadb avec homebrew
Lancement du démon
J'ai essayé de se connecter et j'ai obtenu l'erreur mentionnée ci-dessus
Ma solution
découvrez quels
my.cnf
fichiers sont utilisés parmysql
(comme suggéré dans ce commentaire ):vérifiez où s'exécute le fichier de socket Unix (presque comme décrit ici ):
(vous voudrez peut-être au
grep mysql
lieu de mariadb)Ajoutez le fichier de socket que vous avez trouvé
~/.my.cnf
(créez le fichier si nécessaire) (en supposant qu'il~/.my.cnf
était répertorié lors de l'exécution de lamysql --verbose ...
commande ci-dessus):Redémarrez votre mariadb:
Après cela, je pourrais exécuter mysql et obtenir:
Donc, j'exécute la commande avec les privilèges de superutilisateur à la place et après avoir entré mon mot de passe, j'ai obtenu:
Remarques:
Je ne suis pas tout à fait sûr des groupes dans lesquels vous devez ajouter le socket, d'abord je l'ai eu [client-serveur] mais ensuite j'ai pensé que [client] devrait suffire. Alors je l'ai changé et ça marche toujours.
En cours d'exécution,
mariadb_config | grep socket
j'obtiens:--socket [/tmp/mysql.sock]
ce qui est un peu déroutant car il semble que ce/usr/local/mariadb/data/mariadb.sock
soit l'endroit réel (du moins sur ma machine)Je me demande où je peux configurer le
/usr/local/mariadb/data/mariadb.sock
pour/tmp/mysql.sock
que je puisse utiliser les paramètres par défaut au lieu d'avoir à modifier mon.my.cnf
(mais je suis trop fatigué maintenant pour comprendre cela ...)À un moment donné, j'ai également fait des choses mentionnées dans d'autres réponses avant de proposer cela.
la source
Vous devrez exécuter
mysql_install_db
- le plus simple est si vous êtes dans le répertoire d'installation:Vous pouvez également alimenter
mysql_install_db
unbasedir
paramètre comme celui-ci:la source
J'ai rencontré le même problème sur mon mac et l'ai résolu, en suivant les tutoriels suivants
https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew
Mais n'oubliez pas de supprimer ou de désinstaller l'ancienne version avant de continuer.
Commandes:
la source
Après un redémarrage je n'ai pas pu me connecter avec le mariadb local, une recherche m'a également amené sur cette page et j'ai voulu partager ma solution avec vous.
J'ai remarqué que le répertoire my.cnf.d dans / usr / local / etc / est manquant.
Il s'agit d'un bug connu avec les homebrew qui y est décrit et résolu. https://github.com/Homebrew/homebrew-core/issues/36801
moyen rapide de réparer: mkdir /usr/local/etc/my.cnf.d
la source
brew update
redémarrage.brew services list
Le résultat montrait le statut de mariadbstarted
en jaune. Merci pour le conseil.Lors de l'exécution de mysql_secure_installation et de la saisie du nouveau mot de passe, j'ai obtenu:
J'ai remarqué en essayant ce qui suit de cette réponse :
Il n'a rien retourné, et j'ai compris que cela signifiait qu'il n'y avait pas de fichier .sock.
J'ai donc ajouté ce qui suit à mon fichier my.cnf (soit dans /etc/my.cnf, soit dans mon cas, /usr/local/etc/my.cnf ).
Sous:
Sous:
C'était basé sur ce post .
Ensuite, arrêtez / redémarrez mysql et réessayez mysql_secure_installation qui m'a finalement laissé entrer mon nouveau mot de passe root et continuer avec d'autres préférences de configuration.
J'espère que ça aidera quelqu'un. Mec, je déteste ce truc ...
la source
juste pour terminer ce fil. donc MAMP (PRO) est utilisé assez souvent
le chemin ici est
la source
J'ai lancé manuellement mysql dans le volet des préférences système en initialisant la base de données puis en la démarrant. Cela a résolu mon problème.
la source
Dans mon cas, le coupable a été trouvé dans les fichiers journaux:
J'ai donc renommé
ib_logfile0
pour me débarrasser de l'erreur (j'ai dû faire de même avecib_logfile1
par la suite).la source
J'ai eu le même problème. Après avoir essayé toutes ces méthodes sans succès, j'ai fait ce qui suit:
dans une autre console:
J'ai vu l'erreur suivante:
J'ai donc changé l'
tc.log
extensiontc.log.txt
et redémarré mariadbEt.. Voila!
la source
Cela fonctionne pour moi:
Merci
la source
Pour moi, j'avais installé
mariadb
il y a longtemps, puis installé[email protected]
.Quand j'ai exécuté
mysql -uroot
, j'obtiens l'erreur:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Lire les réponses:
mariadb
/usr/local/var/mysql
mysqld --initialize
Ensuite, j'ai pu
mysql -uroot -p
la source
rm -rf / usr / local / var / mysql / ib_logfile *
la source