Kan geen verbinding maken met lokale MySQL-server via socket ‘/var/mysql/mysql.sock’ (38)

Ik heb een groot probleem om verbinding te maken met mysql. Als ik hardloop:

/usr/local/mysql/bin/mysql start

Ik heb de volgende foutmelding:

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

Ik heb mysql.sockonder de /var/mysqldirectory.

In /etc/my.cnfheb ik:

[client]
port=3306
socket=/var/mysql/mysql.sock
[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

en in /etc/php.iniheb ik :

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock

Ik heb apache opnieuw opgestart met sudo /opt/local/apache2/bin/apachectl restart

Maar ik heb nog steeds de fout.

Anders weet ik niet of dat relevant is, maar als ik mysql_config --socketsdoe, krijg ik

--socket         [/tmp/mysql.sock]

Antwoord 1, autoriteit 100%

Als uw bestand my.cnf (meestal in de map /etc/mysql/) correct is geconfigureerd met

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

je kunt controleren of mysql actief is met het volgende commando:

mysqladmin -u root -p status

probeer uw toestemming te wijzigen in de map mysql. Als u lokaal werkt, kunt u het volgende proberen:

sudo chmod -R 755 /var/lib/mysql/

dat heeft het voor mij opgelost


Antwoord 2, autoriteit 42%

weet u zeker dat u zowel mysql als mysql-server hebt geïnstalleerd..

Om bijvoorbeeld de mySql-server te installeren, gebruik ik yum of apt om zowel de mysql-opdrachtregeltool als de server te installeren:

yum -y install mysql mysql-server (or apt-get install mysql mysql-server)

Schakel de MySQL-service in:

/sbin/chkconfig mysqld on

Start de MySQL-server:

/sbin/service mysqld start

stel daarna het MySQL-rootwachtwoord in:

mysqladmin -u root password 'new-password' (with the quotes)

Ik hoop dat het helpt.


Antwoord 3, autoriteit 37%

Een snelle oplossing die voor mij werkte: probeer het lokale ip-adres (127.0.0.1) te gebruiken in plaats van ‘localhost’ in mysql_connect(). Dit “dwingt” php om verbinding te maken via TCP/IP in plaats van een unix-socket.


Antwoord 4, autoriteit 24%

Ik kreeg de volgende foutmelding

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

Verschillende manieren geprobeerd en uiteindelijk op de volgende manier opgelost

sudo gksu gedit /etc/mysql/my.cnf

aangepast

#bind-address       = 127.0.0.1

naar

bind-address        = localhost

en opnieuw opgestart

sudo /etc/init.d/mysql restart

het werkte


Antwoord 5, autoriteit 15%

Zorg ervoor dat u mysqld gebruikt: /etc/init.d/mysql start


Antwoord 6, autoriteit 9%

Ik kreeg deze foutmelding toen ik de cron-taak voor mijn bestand instelde. Ik heb de rechten van het bestand gewijzigd in 777maar het werkte nog steeds niet voor mij. Eindelijk kreeg ik de oplossing. Misschien is het nuttig voor anderen.

Probeer met dit commando:

mysql -h 127.0.0.1 -P 3306 -u root -p

Onthoud dat -h hostbetekent, -P poorten -p wachtwoord.


Antwoord 7, autoriteit 8%

Om te voorkomen dat het probleem optreedt, moet u de server netjes afsluiten vanaf de opdrachtregel in plaats van de server uit te schakelen.

shutdown -h now

Hierdoor worden de actieve services gestopt voordat de machine wordt uitgeschakeld.

Gebaseerd op Centos, is een extra methode om het weer up-to-date te krijgen wanneer je dit probleem tegenkomt, het verplaatsen van mysql.sock:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
service mysqld start

Als u de service opnieuw start, wordt er een nieuw item gemaakt met de naam mqsql.sock


Antwoord 8, autoriteit 6%

Zoals te zien is aan de vele antwoorden hier, zijn er veel problemen die kunnen resulteren in deze foutmelding wanneer u de MySQL-service start. Het punt is dat MySQL je over het algemeen precies zal vertellen wat er mis is, als je maar in het juiste logbestand kijkt.

Bij Ubuntu moet u bijvoorbeeld /var/log/syslogcontroleren. Aangezien veel andere dingen ook in dit bestand kunnen loggen, wil je waarschijnlijk grepgebruiken om naar mysql-berichten te kijken, en tailom alleen de meest recente te bekijken. Alles bij elkaar zou dat eruit kunnen zien als:

grep mysql /var/log/syslog | tail -50

Breng niet blindelings wijzigingen aan in uw configuratie omdat iemand anders zei: ‘Dit werkte voor mijn systeem.’ Zoek uit wat er werkelijk mis is met uw systeem en u krijgt veel sneller een beter resultaat.


Antwoord 9, autoriteit 5%

Een andere oplossing is om /etc/my.cnf te bewerken en host op te nemen in de sectie [client]

[client]
 #password       = your_password
 host            = 127.0.0.1
 port            = 3306
 socket          = /var/run/mysql/mysql.sock

En dan de mysql-service opnieuw opstarten.

Deze tijdelijke oplossing is getest in: Serverversie: 5.5.25a-log Brondistributie


Antwoord 10, autoriteit 4%

Ik had hetzelfde probleem en het is veroorzaakt door een update van mysql-stuurprogramma’s toen de mysql-server actief was.
Ik heb het opgelost door zowel mysql als apache2 opnieuw op te starten:

sudo-service mysql stop

sudo-service mysql start

sudo-service apache2 stop

sudo-service apache2 start


Antwoord 11, autoriteit 3%

probeer met -h (host) en -P(port):

mysql -h 127.0.0.1 -P 3306 -u root -p


Antwoord 12, autoriteit 3%

In mijn geval gebruikte ik Centos 5.5. Ik ontdekte dat het probleem was omdat de mysql-service op de een of andere manier was gestopt.
Dus begon ik mysql-service met het commando:

/etc/init.d/mysqld start

Dus.. domme fout.


Antwoord 13, autoriteit 3%

Als alles goed werkte en je deze fout net begint te zien, zorg er dan voor dat je niet te weinig schijfruimte hebt voordat je iets anders doet:

df -h

Als het volume waarop de mysql.sockwordt gemaakt voor 100% wordt gebruikt, kan MySql het niet maken en is dit de oorzaak van deze fout. Het enige wat u hoeft te doen is iets verwijderen dat niet nodig is, zoals oude logbestanden.


Antwoord 14, autoriteit 3%

sudo service mysql start

Dit zou je prima van pas moeten komen. Het is mogelijk dat u enkele opdrachten hebt gewijzigd die van invloed waren op de mysql-configuraties.


Antwoord 15, autoriteit 2%

Er zijn veel oplossingen voor dit probleem, maar voor mijn situatie moest ik gewoon de DATUMop de machine/server corrigeren (Ubuntu 16.04 Server).

i) Controleer de datum van uw server en corrigeer deze.

ii) Voer sudo /etc/init.d/mysql restart

uit

Daarmee zou het moeten beginnen.


Antwoord 16, autoriteit 2%

Ik kreeg de foutmelding omdat ik MAMP draaide en mijn .sock-bestand zich op een andere locatie bevond. Ik heb zojuist een symbolische link toegevoegd waar de app dacht dat het zou moeten zijn, die wees naar waar het daadwerkelijk was en het werkte als een charme.


Antwoord 17, autoriteit 2%

Als u de AWS (Amazon Web Services) Micro-versie gebruikt, is er een geheugenprobleem. Toen ik rende

mysql

van de terminal zou het zeggen

ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock' (111)

Dus ik probeerde het volgende en het zou gewoon mislukken.

service mysqld restart

Na veel zoeken kwam ik erachter dat je een wisselbestand moet maken zodat MySQL voldoende geheugen heeft. Instructies worden vermeld: http://www.prowebdev .us/2012/05/amazon-ec2-linux-micro-swap-space.html.

Toen kon ik mysqld opnieuw opstarten.


Antwoord 18, autoriteit 2%

Ik ontdekte ook dat dit een probleem met de rechten was. Ik vergeleek de MySQL-bestanden met een werkende installatie (beide op Debian 6 squeeze) en moest de volgende eigendomswijzigingen doorvoeren (waarbij mydatabasealle database(s) is die u heeft).

Eigendom mysql:mysql:

chown mysql:mysql /var/lib/mysql
chown mysql:mysql /var/lib/mysql/ib*
chown mysql:mysql /var/lib/mysql/mydatabase
chown mysql:mysql /var/lib/mysql/mydatabase/*
chown mysql:mysql /var/lib/mysql/mysql/* 

Eigendom mysql:root:

chown mysql:root /var/lib/mysql/mysql
chown mysql:root /var/run/mysqld 

Eigendom mysql:adm:

chown mysql:adm /var/log/mysql
chown mysql:adm /var/log/mysql.err
chown mysql:adm /var/log/mysql.log* 

Antwoord 19, autoriteit 2%

Voor mij was dit gewoon een geval van MySQL die lang duurde om te laden. Ik heb meer dan 100.000 tabellen in een van mijn databases en het is uiteindelijk begonnen, maar in dit geval duurt het natuurlijk lang.


Antwoord 20

u kunt altijd de mysql-server starten door de locatie van het mysql.sock-bestand op te geven met behulp van de optie --socketzoals

mysql --socket=/var/mysql/mysql.sock 

Dit werkt zelfs als de locatie van het socketbestand is opgegeven op een andere locatie in het mijn.cnf-bestand.


Antwoord 21

Voor degenen wiens oplossing niet werkte, probeer:

cd /etc/mysql

controleer of my.cnfaanwezig is

nano my.cnf

en zorg ervoor dat je als volgt maar één bind-adres hebt:

bind-adres = 127.0.0.1

Zo niet, dan kan dat het probleem zijn, sluit nano gewoon af en sla het bestand op.

en service mysql start

merk op dat als je nano niet hebt (het is een teksteditor), installeer het gewoon met apt-get install nanoen druk eenmaal binnen op Ctrl+X om af te sluiten, vergeet niet Y te zeggen om hetzelfde bestand op te slaan en te gebruiken)


Antwoord 22

sudo service mysqld start

Werkt voor mij, ik gebruik Centos


Antwoord 23

Ik had dit probleem ook toen ik de server probeerde te starten, dus veel van de antwoorden hier die zeggen dat de server moet worden gestart, werkten niet. Het eerste dat u kunt doen, is het volgende uitvoeren om te zien of er configuratiefouten zijn:

/usr/sbin/mysqld --verbose --help 1>/dev/null

Ik had één fout die opdook:

160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ...
160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160816 19:24:33 [Note] Plugin 'FEDERATED' is disabled.
160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable 'innodb-online-alter-log-max-size=4294967296'
160816 19:24:33 [ERROR] Aborting

Een simpele grep -HR "innodb-online-alter-log-max-size" /etc/mysql/liet me precies zien welk bestand de aanstootgevende regel bevatte, dus ik verwijderde die regel uit de bestand.

Vervolgens, het controleren van mijn /var/log/mysql/error.log-bestand dat ik had:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 671088640 bytes!
160816 22:46:46 [ERROR] Plugin 'InnoDB' init function returned error.
160816 22:46:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160816 22:46:46 [ERROR] Aborting

Op basis van deze vraagde geaccepteerde oplossing zou niet werken omdat ik de server niet eens kon starten, dus volgde ik wat sommige opmerkingen zeiden en verwijderde mijn /var/lib/mysql/ib_logfile0en /var/lib/mysql/ib_logfile1bestanden.

Hierdoor kon de server starten en kon ik verbinding maken en query’s uitvoeren, maar toen ik mijn foutenlogbestand controleerde, raakte het snel vol met enkele tienduizenden regels zoals deze:

160816 22:52:15  InnoDB: Error: page 1415 log sequence number 82039318708
InnoDB: is in the future! Current system log sequence number 81640793100.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.

Gebaseerd op een suggestie van hier, om dit op te lossen heb ik een mysqldump gedaan en alle databases hersteld (zie de link voor verschillende andere oplossingen).

$ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql
$ mysql -u root -p < backup-all-databases.sql

Alles lijkt nu te werken zoals verwacht.


Antwoord 24

Toevoegen

--protocol=tcp 

naar de lijst met pramaters in uw connectie werkte voor mij.


Antwoord 25

Dit was goed genoeg voor mij

sudo /etc/init.d/mysql restart

Antwoord 26

Ik kwam dit probleem vandaag tegen. Geen van deze antwoorden bood de oplossing. Ik moest de volgende opdrachten uitvoeren (hier https://stackoverflow.com/a/20141146/633107) voor mijn mysql-service om te starten:

sudo /etc/init.d/mysql stop
cd /var/lib/mysql/
ls ib_logfile*
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
... etc ...
/etc/init.d/mysql restart

Dit werd gedeeltelijk aangegeven door de volgende fouten in /var/log/mysql/error.log:

140319 11:58:21 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
140319 11:58:21 [ERROR] Plugin 'InnoDB' init function returned error.
140319 11:58:21 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB
140319 11:58:21 [ERROR] Aborting

Ik zag ook de schijf vol fout, maar alleen bij het uitvoeren van opdrachten zonder sudo. Als de permissiecontrole mislukt, meldt het dat de schijf vol is (zelfs als uw partitie niet eens bijna vol is).


Antwoord 27

CentOS 7, 64-bits. Nieuwe installatie.
In mijn geval was de fout omdat ik niet de juiste MySQL-server en MySQL-client had geïnstalleerd.
Met behulp van yumheb ik mariadben mysql-community editie verwijderd. Ik heb de rpm’s voor de client en server gedownload van de officiële MySQL-websiteen de server en client geïnstalleerd .

Bij het installeren van de server kreeg ik een bericht te zien dat het wachtwoord voor het root-account voor MySQL was opgeslagen in een bestand dat ik kon bekijken met sudo cat /root/.mysql_secret.

Dus na het installeren van de client en server, controleerde ik of MySQL werkte (ik denk dat ik opnieuw opgestart heb voordat ik dit deed) met het commando sudo service mysql statusen ik kreeg het resultaat.

MySQL actief (2601) [ OK ]

Ik heb me aangemeld bij MySQL met het wachtwoord uit het .mysql_secret-bestand:
mysql -uroot -pdxM01Xfg3DXEPabpf. Merk op dat dxM01Xfg3DXEPabpfhet wachtwoord is dat wordt vermeld in het .mysql_secret-bestand.

en typte vervolgens de volgende opdracht achter de mysql-prompt om het wachtwoord van root te wijzigen:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');

Alles werkte vanaf dat moment prima.


Antwoord 28

Dit beantwoordt niet direct je vraag, maar een deel ervan, namelijk het gebruik van PythonAnywhere. Ik kwam deze vraag steeds tegen toen ik op zoek was naar een oplossing, dus ik voeg het hier toe in de hoop dat het anderen in mijn situatie zal helpen.


PythonAnywhereheeft besloten de hostnamen van de databaseverbinding te wijzigen om de efficiëntie en betrouwbaarheid te verbeteren, zoals hier gedetailleerd:

De officiële hostnaam die u moet gebruiken om verbinding te maken met uw account
MySQL-database-instantie is gewijzigd van mysql.server in
uwgebruikersnaam.mysql.pythonanywhere-services.com. Dit omzeilt een deel van onze infrastructuur dat de laatste tijd problemen begint te vertonen
weken, en het zou veel efficiënter en betrouwbaarder moeten zijn dan het oude
manier.

Daarom moet u uw hostnaam bijwerken naar de hierboven gemarkeerde waarde.


Antwoord 29

Ik heb net dit probleem gehad. na een dag controleren heb ik eindelijk het antwoord daarmee. Het mysql.sock-bestand wordt gemaakt wanneer MariaDB start en wordt verwijderd wanneer MariaDB wordt afgesloten. Het zal niet bestaan ​​als MariaDB niet actief is.
misschien heb je MariaDB niet geïnstalleerd.
U KUNT DE ONDERSTAANDE INSTRUCTIE VOLGEN:
https://www.linode. com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7
BESTE


Antwoord 30

Ik had deze socketfout en het kwam er in feite op neer dat MySQL niet actief was. Als u een nieuwe installatie uitvoert, zorg er dan voor dat u 1) het systeempakket en 2) het paneelinstallatieprogramma (mysql.prefPane) installeert. Met het installatieprogramma van het paneel kunt u naar uw systeemvoorkeuren gaan en MySQL openen en vervolgens een instantie laten draaien.

Houd er rekening mee dat ik bij een nieuwe installatie mijn computer moest resetten om de wijzigingen goed door te voeren. Na een herstart kreeg ik een nieuw exemplaar en kon ik zonder probleem een ​​verbinding met localhost openen.

Ook opmerkend dat ik blijkbaar eerdere versies van MySQL had geïnstalleerd, maar het paneel had verwijderd, waardoor het gemakkelijk is om een ​​exemplaar van MySQL voor Mac-gebruikers te laten werken.

Een goede link voor dit proces van opnieuw installeren: http://www.coolestguyplanetech.com/how-to-install-php-mysql-apache-on-os-x-10-6/

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes