J'ai un gros problème en essayant de me connecter à mysql. Quand je cours:
/usr/local/mysql/bin/mysql start
J'ai l'erreur suivante:
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
J'ai mysql.sock
sous le /var/mysql
répertoire.
En /etc/my.cnf
j'ai:
[client]
port=3306
socket=/var/mysql/mysql.sock
[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
et /etc/php.ini
j'ai:
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock
J'ai redémarré apache en utilisant sudo /opt/local/apache2/bin/apachectl restart
Mais j'ai encore l'erreur.
Sinon, je ne sais pas si c'est pertinent mais quand je le fais, mysql_config --sockets
je reçois
--socket [/tmp/mysql.sock]
/var/log/mysql
ou quelque part par là) qui indique pourquoi il ne fonctionne pas? Obtenez-vous une erreur lorsque vous essayez de le démarrer?service mysqld start
si vous venez d'installer. hthsudo service mysql start
m'a sauvéRéponses:
Si votre fichier my.cnf (généralement dans le dossier / etc / mysql / ) est correctement configuré avec
vous pouvez vérifier si mysql fonctionne avec la commande suivante:
essayez de modifier votre autorisation sur le dossier mysql. Si vous travaillez localement, vous pouvez essayer:
qui l'a résolu pour moi
la source
mysqld
service.êtes-vous sûr d'avoir installé mysql ainsi que le serveur mysql ..
Par exemple, pour installer le serveur mySql, j'utiliserai yum ou apt pour installer à la fois l'outil de ligne de commande mysql et le serveur:
Activez le service MySQL:
Démarrez le serveur MySQL:
définissez ensuite le mot de passe racine MySQL:
J'espère que ça aide.
la source
brew install mysql
sudo apt-get install mysql-server
alors la vie était belleCan't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
du client n'est-elle pas ? C'est le client qui essaie de ne pas se connecter, non? (Je pense que la question d'origine doit être modifiée pour clarifier cela).Une solution rapide qui a fonctionné pour moi: essayez d'utiliser l'adresse IP locale (127.0.0.1) au lieu de 'localhost' dans mysql_connect (). Cela "force" php à se connecter via TCP / IP au lieu d'un socket Unix.
la source
localhost
et n'obtient-il pas de127.0.0.1
toute façon avant même d'essayer de se connecter?J'ai l'erreur suivante
J'ai essayé plusieurs façons et je l'ai finalement résolu de la manière suivante
modifié
à
et redémarré
ça a marché
la source
localhost
corriger.Assurez-vous que vous utilisez mysqld:
/etc/init.d/mysql start
la source
sudo service mysql start|restart
pour Ubuntu.Pour éviter que le problème ne se produise, vous devez effectuer un arrêt progressif du serveur à partir de la ligne de commande plutôt que de mettre le serveur hors tension.
Cela arrêtera les services en cours d'exécution avant d'éteindre la machine.
Basé sur Centos, une méthode supplémentaire pour le récupérer à nouveau lorsque vous rencontrez ce problème consiste à déplacer mysql.sock:
Le redémarrage du service crée une nouvelle entrée appelée mqsql.sock
la source
J'ai eu cette erreur lorsque j'ai défini le travail cron pour mon fichier. J'ai changé les autorisations du fichier en 777 mais cela n'a toujours pas fonctionné pour moi. J'ai finalement trouvé la solution. Peut-être que ce sera utile pour les autres.
Essayez avec cette commande:
N'oubliez pas que -h signifie hôte , -P signifie port et -p signifie mot de passe.
la source
-p
ne signifie pas port , cela signifie mot de passe , vous l'avez confondu avec-P
mysql -h 127.0.0.1 -u root -p
Comme le montrent les nombreuses réponses ici, de nombreux problèmes peuvent entraîner ce message d'erreur lorsque vous démarrez le service MySQL. Le fait est que MySQL vous dira généralement exactement ce qui ne va pas, si vous regardez simplement dans le fichier journal approprié.
Par exemple, sur Ubuntu, vous devriez vérifier
/var/log/syslog
. Étant donné que de nombreuses autres choses peuvent également être enregistrées dans ce fichier, vous souhaiterez probablement utilisergrep
pour consulter les messages mysql ettail
pour ne consulter que les plus récents. Dans l'ensemble, cela pourrait ressembler à:grep mysql /var/log/syslog | tail -50
Ne modifiez pas aveuglément votre configuration, car quelqu'un d'autre a dit: "Cela a fonctionné pour mon système". Découvrez ce qui ne va pas avec votre système et vous obtiendrez un meilleur résultat beaucoup plus rapidement.
la source
.cnf
. Ceci explique cela. Maintenant, je peux arrêter d'essayer des choses aléatoires et résoudre le problème réel. Merci.Une autre solution consiste à modifier /etc/my.cnf et à inclure l'hôte dans la section [client]
Et puis redémarrer le service mysql.
Cette solution de contournement a été testée dans: Version du serveur: 5.5.25a-log Distribution source
la source
J'ai eu le même problème et cela a été causé par une mise à jour des pilotes mysql lorsque le serveur mysql était en cours d'exécution. Je l'ai corrigé en redémarrant à la fois mysql et apache2:
la source
mysql
ne fonctionnait pas. J'ai courusudo service mysql start
après avoir courusudo service mysql status
pour vérifier qu'il ne fonctionnait pas.Dans mon cas, j'utilisais Centos 5.5. J'ai trouvé que le problème était dû au fait que le service mysql avait été arrêté. J'ai donc commencé le service mysql avec la commande:
Donc .. erreur stupide.
la source
Si tout a bien fonctionné et que vous venez de voir cette erreur, avant de faire quoi que ce soit d'autre, assurez-vous que vous n'êtes pas à court d'espace disque:
Si le volume où le mysql.sock est créé est à 100% utilisé, MySql ne pourra pas le créer et ce sera la cause de cette erreur. Tout ce que vous devez faire est de supprimer quelque chose qui n'est pas nécessaire, comme les anciens fichiers journaux.
la source
essayez avec -h (hôte) et -P (port):
mysql -h 127.0.0.1 -P 3306 -u root -p
la source
Cela devrait vous servir très bien. Il est possible que vous ayez modifié certaines commandes qui ont affecté les configurations mysql.
la source
systemctl start mariadb.service
dans Fedora 22 ou RedHat 7. Après cela, il est possible de définir le mot de passe root.Il existe de nombreuses solutions à ce problème mais pour ma situation, j'avais juste besoin de corriger la DATE sur la machine / le serveur ( Ubuntu 16.04 Server ).
i) Vérifiez la date de votre serveur et corrigez-la.
ii) Exécuter
sudo /etc/init.d/mysql restart
Cela devrait le faire démarrer.
la source
J'obtenais l'erreur parce que j'exécutais MAMP et que mon fichier .sock était dans un emplacement différent. Je viens d'ajouter un lien symbolique où l'application pensait que cela devrait être celui qui indiquait où il se trouvait réellement et cela fonctionnait comme un charme.
la source
J'ai également constaté qu'il s'agissait d'un problème d'autorisations. J'ai comparé les fichiers MySQL à une installation fonctionnelle (à la fois sur Debian 6 squeeze) et j'ai dû faire les changements de propriété suivants (où
mydatabase
se les bases de données que vous avez).Propriété
mysql:mysql
:Propriété
mysql:root
:Propriété
mysql:adm
:la source
Pour moi, c'était simplement un cas où MySQL prenait beaucoup de temps à charger. J'ai plus de 100 000 tables dans l'une de mes bases de données et cela a finalement commencé, mais cela doit évidemment prendre beaucoup de temps dans ce cas.
la source
Si vous utilisez la version Micro d'AWS (Amazon Web Services), il s'agit d'un problème de mémoire. Quand j'ai couru
du terminal, il dirait
J'ai donc essayé ce qui suit et cela échouerait.
Après de nombreuses recherches, j'ai découvert que vous devez créer un fichier d'échange pour que MySQL ait suffisamment de mémoire. Les instructions sont répertoriées: http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html .
Ensuite, j'ai pu redémarrer mysqld.
la source
vous pouvez toujours démarrer le serveur mysql en spécifiant l'emplacement du fichier mysql.sock en utilisant l'
--socket
option commeCela fonctionnera même si l'emplacement du fichier socket est spécifié dans un emplacement différent dans le fichier my.cnf.
la source
Pour ceux dont aucune solution n'a fonctionné, essayez:
vérifier si my.cnf est présent
et assurez-vous que vous n'avez qu'une seule adresse de liaison comme suit:
bind-address = 127.0.0.1
Sinon, cela pourrait être le problème, quittez simplement nano et enregistrez le fichier.
et
service mysql start
notez que si vous n'avez pas nano (c'est un éditeur de texte) installez-le simplement
apt-get install nano
et appuyez une fois sur Ctrl + X pour quitter, n'oubliez pas de dire Y pour enregistrer et utiliser le même fichier)la source
J'ai également eu ce problème lors de la tentative de démarrage du serveur, de sorte que la plupart des réponses ici qui disent simplement de démarrer le serveur n'ont pas fonctionné. La première chose que vous pouvez faire est d'exécuter ce qui suit pour voir s'il y a des erreurs de configuration:
J'ai eu une erreur qui est apparue:
Un simple
grep -HR "innodb-online-alter-log-max-size" /etc/mysql/
m'a montré exactement quel fichier contenait la ligne incriminée, j'ai donc supprimé cette ligne du fichier.Ensuite, en vérifiant mon
/var/log/mysql/error.log
dossier, j'avais:Sur la base de cette question, la solution acceptée ne fonctionnerait pas car je ne pouvais même pas démarrer le serveur, j'ai donc suivi ce que certains commentaires ont dit et supprimé mes fichiers
/var/lib/mysql/ib_logfile0
et/var/lib/mysql/ib_logfile1
.Cela a permis au serveur de démarrer et j'ai pu me connecter et exécuter des requêtes, mais en vérifiant mon fichier journal des erreurs, il se remplissait rapidement de plusieurs dizaines de milliers de lignes comme ceci:
Sur la base d'une suggestion d' ici , pour résoudre ce problème, j'ai fait un mysqldump et une restauration de toutes les bases de données (voir le lien pour plusieurs autres solutions).
Tout semble fonctionner comme prévu maintenant.
la source
/var/log/mysql/error.log
aidé dans mon cas. Il y en a eu[ERROR] Can't init tc log
qui a été rapidement corrigé en utilisant la réponse suivante: dba.stackexchange.com/a/185006/163583Ajouter
à la liste des pramaters dans votre relation a fonctionné pour moi.
la source
C'était assez bon pour moi
la source
J'ai rencontré ce problème aujourd'hui. Aucune de ces réponses n'a fourni le correctif. J'ai dû faire les commandes suivantes (trouvées ici https://stackoverflow.com/a/20141146/633107 ) pour que mon service mysql démarre:
Cela était en partie indiqué par les erreurs suivantes dans /var/log/mysql/error.log:
J'ai également vu l'erreur de disque plein, mais uniquement lors de l'exécution de commandes sans sudo. Si la vérification des autorisations échoue, il signale que le disque est plein (même lorsque votre partition n'est même pas presque pleine).
la source
CentOS 7, 64 bits. Nouvelle installation.
Dans mon cas, l'erreur était due au fait que je n'avais pas le bon serveur MySQL et le client MySQL installés.
En utilisant
yum
, j'ai supprimémariadb
et l'édition mysql-community. J'ai téléchargé les rpm du client et du serveur sur le site officiel de MySQL et installé le serveur et le client.Lors de l'installation du serveur, on m'a montré un message indiquant que le mot de passe du compte root pour MySQL était stocké dans un fichier que je pouvais visualiser
sudo cat /root/.mysql_secret
.Donc, après avoir installé le client et le serveur, j'ai vérifié si MySQL fonctionnait (je pense avoir redémarré avant de le faire) avec la commande
sudo service mysql status
et j'ai obtenu le résultat.Je me suis connecté en MySQL en utilisant le mot de passe du fichier .mysql_secret:
mysql -uroot -pdxM01Xfg3DXEPabpf
. Notez quedxM01Xfg3DXEPabpf
s'agit du mot de passe mentionné dans le fichier .mysql_secret.puis tapé entré la commande suivante à l'invite mysql pour changer le mot de passe de root:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');
Tout a bien fonctionné à partir de là.
la source
J'ai travaillé pour moi, j'utilise Centos
la source
Cela ne répond pas directement à votre question mais à un sous-ensemble de celle-ci, à savoir l'utilisation de PythonAnywhere. Je n'arrêtais pas de trébucher sur cette question lorsque je cherchais un correctif, donc je l'ajoute ici dans l'espoir que cela aidera les autres dans ma situation.
PythonAnywhere a décidé de changer les noms d'hôte de connexion à la base de données afin d'améliorer l'efficacité et la fiabilité, comme détaillé ici :
Par conséquent, vous devrez mettre à jour votre nom d'hôte à la valeur indiquée ci-dessus.
la source
Je viens d'avoir ce problème. après une journée de vérification, j'ai enfin la réponse: le fichier mysql.sock est créé au démarrage de MariaDB et supprimé lorsque MariaDB est arrêté. Il n'existera pas si MariaDB n'est pas en cours d'exécution. vous n'avez peut-être pas installé MariaDB. VOUS POUVEZ SUIVRE L'INSTRUCTION CI-DESSOUS: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST
la source
J'ai eu cette erreur de socket et cela est essentiellement dû au fait que MySQL ne fonctionnait pas. Si vous exécutez une nouvelle installation, assurez-vous d'installer 1) le package système et 2) le programme d'installation du panneau (mysql.prefPane). Le programme d'installation du panneau vous permettra d'accéder à vos préférences système et d'ouvrir MySQL, puis de lancer une instance.
Notez que, lors d'une nouvelle installation, j'avais besoin de réinitialiser mon ordinateur pour que les modifications prennent correctement effet. Après un redémarrage, j'ai obtenu une nouvelle instance en cours d'exécution et j'ai pu ouvrir une connexion à localhost sans problème.
Il convient également de noter que j'avais apparemment installé des versions précédentes de MySQL, mais que j'avais supprimé le panneau, ce qui rend facile l'exécution d'une instance de MySQL pour les utilisateurs de Mac.
Un bon lien pour ce processus de réinstallation: http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/
la source