Mam duży problem z połączeniem się z mysql. Kiedy biegnę:
/usr/local/mysql/bin/mysql start
Mam następujący błąd:
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
Mam mysql.sock
w /var/mysql
katalogu.
W /etc/my.cnf
mam:
[client]
port=3306
socket=/var/mysql/mysql.sock
[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
a /etc/php.ini
ja mam:
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock
Uruchomiłem ponownie apache za pomocą sudo /opt/local/apache2/bin/apachectl restart
Ale nadal mam błąd.
W przeciwnym razie nie wiem, czy to istotne, ale kiedy mysql_config --sockets
dostanę
--socket [/tmp/mysql.sock]
/var/log/mysql
lub gdzieś tam), co wskazuje, dlaczego nie działa? Czy podczas próby uruchomienia pojawia się błąd?service mysqld start
jeśli właśnie zainstalowałeś. HTHsudo service mysql start
uratowała mnieOdpowiedzi:
Jeśli plik my.cnf (zwykle w folderze / etc / mysql / ) jest poprawnie skonfigurowany z
możesz sprawdzić, czy mysql jest uruchomiony za pomocą następującego polecenia:
spróbuj zmienić swoje uprawnienia do folderu mysql. Jeśli pracujesz lokalnie, możesz spróbować:
to dla mnie rozwiązało
źródło
mysqld
usługi.czy na pewno zainstalowałeś mysql oraz serwer mysql?
Na przykład, aby zainstalować serwer mySql, użyję yum lub apt, aby zainstalować zarówno narzędzie wiersza polecenia mysql, jak i serwer:
Włącz usługę MySQL:
Uruchom serwer MySQL:
następnie ustaw hasło root MySQL:
Mam nadzieję, że to pomoże.
źródło
brew install mysql
sudo apt-get install mysql-server
wtedy życiemCan't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
od klienta nie są? To klient próbuje się nie połączyć, prawda? (Myślę, że oryginalne pytanie wymaga edycji, aby to wyjaśnić).Szybkie obejście, które zadziałało dla mnie: spróbuj użyć lokalnego adresu IP (127.0.0.1) zamiast „localhost” w mysql_connect (). To „zmusza” php do połączenia przez TCP / IP zamiast gniazda unix.
źródło
localhost
i nie dostaje127.0.0.1
nawet przed próbą połączenia?Wystąpił następujący błąd
Wypróbowałem kilka sposobów i w końcu rozwiązałem go w następujący sposób
zmodyfikowany
do
i zrestartowałem
zadziałało
źródło
localhost
to naprawić.Upewnij się, że korzystasz z mysqld:
/etc/init.d/mysql start
źródło
sudo service mysql start|restart
dla Ubuntu.Aby zapobiec występowaniu problemu, należy wykonać płynne zamknięcie serwera z wiersza poleceń zamiast wyłączania serwera.
Spowoduje to zatrzymanie uruchomionych usług przed wyłączeniem zasilania maszyny.
Opierając się na Centos, dodatkową metodą przywrócenia go ponownie po napotkaniu tego problemu jest przeniesienie mysql.sock:
Ponowne uruchomienie usługi tworzy nowy wpis o nazwie mqsql.sock
źródło
Wystąpił ten błąd, gdy ustawiłem zadanie CRON dla mojego pliku. Zmieniłem uprawnienia do pliku na 777, ale nadal nie działało to dla mnie. Wreszcie mam rozwiązanie. Być może będzie to pomocne dla innych.
Spróbuj użyć tego polecenia:
Pamiętaj, że -h oznacza host , -P oznacza port, a -p oznacza hasło.
źródło
-p
nie oznacza portu , oznacza hasło , pomyliłeś je z-P
mysql -h 127.0.0.1 -u root -p
Jak wynika z wielu odpowiedzi tutaj, istnieje wiele problemów, które mogą powodować pojawienie się tego komunikatu o błędzie podczas uruchamiania usługi MySQL. Rzecz w tym, że MySQL ogólnie powie dokładnie, co jest nie tak, jeśli po prostu zajrzysz do odpowiedniego pliku dziennika.
Na przykład w Ubuntu powinieneś sprawdzić
/var/log/syslog
. Ponieważ wiele innych rzeczy może również logować się do tego pliku, prawdopodobnie chcesz użyćgrep
do przeglądania wiadomości mysql itail
do przeglądania tylko najnowszych. Wszystko razem może wyglądać następująco:grep mysql /var/log/syslog | tail -50
Nie wprowadzaj na ślepo zmian w konfiguracji, ponieważ ktoś inny powiedział: „To zadziałało w moim systemie”. Dowiedz się, co jest naprawdę nie tak z twoim systemem, a uzyskasz lepszy wynik znacznie szybciej.
źródło
.cnf
. To wyjaśnia to. Teraz mogę przestać próbować losowych rzeczy i rozwiązać rzeczywisty problem. Dzięki.Innym obejściem jest edycja /etc/my.cnf i włączenie hosta w sekcji [klient]
A następnie zrestartowanie usługi mysql.
To obejście zostało przetestowane w: Wersja serwera: 5.5.25a-log Dystrybucja źródła
źródło
Miałem ten sam problem i został on spowodowany przez aktualizację sterowników mysql podczas działania serwera mysql. Naprawiłem to, restartując zarówno mysql, jak i apache2:
źródło
mysql
nie działał. Pobiegłemsudo service mysql start
po uruchomieniu,sudo service mysql status
aby sprawdzić, czy nie działa.W moim przypadku korzystałem z Centos 5.5. Odkryłem, że problem polegał na tym, że usługa mysql została w pewien sposób zatrzymana. Więc uruchomiłem usługę mysql z poleceniem:
Więc ... głupi błąd.
źródło
Jeśli wszystko działało dobrze i właśnie zaczął się pojawiać ten błąd, zanim zrobisz cokolwiek innego, upewnij się, że nie brakuje miejsca na dysku:
Jeśli wolumin, w którym tworzony jest mysql.sock , jest w 100% wykorzystywany, MySql nie będzie w stanie go utworzyć i to będzie przyczyną tego błędu. Wszystko, co musisz zrobić, to usunąć coś, co nie jest potrzebne, na przykład stare pliki dziennika.
źródło
spróbuj z -h (host) i -P (port):
mysql -h 127.0.0.1 -P 3306 -u root -p
źródło
To powinno ci dobrze służyć. Może istnieć możliwość zmiany niektórych poleceń, które wpłynęły na konfiguracje mysql.
źródło
systemctl start mariadb.service
w Fedorze 22 lub RedHat 7. Następnie można ustawić hasło roota.Istnieje wiele rozwiązań tego problemu, ale w mojej sytuacji musiałem tylko skorygować DATĘ na komputerze / serwerze ( Ubuntu 16.04 Server ).
i) Sprawdź datę swojego serwera i popraw ją.
ii) Uruchom
sudo /etc/init.d/mysql restart
To powinno zacząć.
źródło
Wystąpił błąd, ponieważ uruchomiłem MAMP, a mój plik .sock znajdował się w innej lokalizacji. Właśnie dodałem symboliczny link w miejscu, w którym aplikacja powinna wskazywać, gdzie naprawdę jest i działał jak urok.
źródło
Odkryłem również, że był to problem z uprawnieniami. Porównałem pliki MySQL z działającą instalacją (oba w squeeze na Debianie 6) i musiałem wprowadzić następujące zmiany własności (gdzie
mydatabase
masz dowolną bazę danych).Własność
mysql:mysql
:Własność
mysql:root
:Własność
mysql:adm
:źródło
Dla mnie - był to po prostu przypadek, że MySQL długo się ładował. Mam ponad 100 000 tabel w jednej z moich baz danych i ostatecznie się zaczęło, ale oczywiście w tym przypadku musi to zająć dużo czasu.
źródło
Jeśli używasz wersji AWS (Amazon Web Services) Micro, problem dotyczy pamięci. Kiedy pobiegłem
z terminala by powiedział
Więc wypróbowałem następujące i po prostu się nie powiedzie.
Po wielu poszukiwaniach odkryłem, że musisz utworzyć plik wymiany, aby MySQL miał wystarczającą ilość pamięci. Instrukcje są wymienione: http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html .
Następnie mogłem zrestartować mysqld.
źródło
zawsze możesz uruchomić serwer mysql, określając lokalizację pliku mysql.sock za pomocą
--socket
opcji podobnejDziała to nawet wtedy, gdy lokalizacja pliku gniazda znajduje się w innej lokalizacji w pliku my.cnf.
źródło
Dla tych, których żadne rozwiązanie nie działa, spróbuj:
sprawdź, czy plik my.cnf jest obecny
i upewnij się, że masz tylko jeden adres powiązania w następujący sposób:
adres powiązania = 127.0.0.1
Jeśli nie, może to być problem, po prostu wyjdź z nano i zapisz plik.
i
service mysql start
zwróć uwagę, że jeśli nie masz nano (jest to edytor tekstowy), po prostu zainstaluj go
apt-get install nano
i po prostu naciśnij Ctrl + X, aby wyjść, nie zapomnij powiedzieć Y, aby zapisać i użyć tego samego pliku)źródło
Miałem ten problem również podczas próby uruchomienia serwera, więc wiele odpowiedzi tutaj, które mówią tylko o uruchomieniu serwera, nie zadziałało. Pierwszą rzeczą, którą możesz zrobić, to wykonać następujące czynności, aby sprawdzić, czy są jakieś błędy konfiguracji:
Miałem jeden błąd, który się pojawił:
Prosty
grep -HR "innodb-online-alter-log-max-size" /etc/mysql/
pokazał mi dokładnie, który plik zawierał linię naruszającą, więc usunąłem tę linię z pliku.Następnie, sprawdzając mój
/var/log/mysql/error.log
plik, miałem:W oparciu o to pytanie zaakceptowane rozwiązanie nie zadziałałoby, ponieważ nie mogłem nawet uruchomić serwera, więc podążyłem za tym, co powiedziały niektóre komentarze i usunąłem moje
/var/lib/mysql/ib_logfile0
i/var/lib/mysql/ib_logfile1
pliki.Pozwoliło to na uruchomienie serwera i mogłem łączyć się i wykonywać zapytania, jednak po sprawdzeniu pliku dziennika błędów szybko zapełniłem się kilkadziesiąt tysięcy takich wierszy:
W oparciu o sugestię z tego miejsca , aby to naprawić, zrobiłem mysqldump i przywróciłem wszystkie bazy danych (patrz link kilku innych rozwiązań).
Wygląda na to, że wszystko działa teraz zgodnie z oczekiwaniami.
źródło
/var/log/mysql/error.log
pomogło w moim przypadku. Było to,[ERROR] Can't init tc log
co zostało szybko naprawione przy użyciu następującej odpowiedzi: dba.stackexchange.com/a/185006/163583Dodawanie
do listy wózków dziecięcych w twoim związku działało dla mnie.
źródło
To mi wystarczyło
źródło
Wpadłem dziś na ten problem. Żadna z tych odpowiedzi nie dała poprawki. Aby uruchomić usługę mysql, musiałem wykonać następujące polecenia (znajdujące się tutaj https://stackoverflow.com/a/20141146/633107 ):
Zostało to częściowo wskazane przez następujące błędy w /var/log/mysql/error.log:
Widziałem także błąd zapełnienia dysku, ale tylko podczas uruchamiania poleceń bez sudo. Jeśli sprawdzenie uprawnień nie powiedzie się, zgłasza, że dysk jest zapełniony (nawet jeśli partycja nie jest jeszcze prawie pełna).
źródło
CentOS 7, 64-bitowy. Świeża instalacja.
W moim przypadku błąd był spowodowany tym, że nie miałem zainstalowanego odpowiedniego serwera MySQL i klienta MySQL.
Używając
yum
, usunąłemmariadb
i mysql-edycja społeczności. Pobrałem rpm dla klienta i serwera z oficjalnej strony MySQL i zainstalowałem serwer i klienta.Podczas instalacji serwera pokazano mi komunikat, że hasło do konta root dla MySQL było przechowywane w pliku, który mogłem przeglądać
sudo cat /root/.mysql_secret
.Po zainstalowaniu klienta i serwera sprawdziłem, czy MySQL działa (myślę, że wcześniej to zrestartowałem) za pomocą polecenia
sudo service mysql status
i otrzymałem wynik.Zalogowałem się do MySQL za pomocą hasła z pliku .mysql_secret:
mysql -uroot -pdxM01Xfg3DXEPabpf
. Zauważ, żedxM01Xfg3DXEPabpf
jest to hasło wymienione w pliku .mysql_secret.a następnie wpisał następujące polecenie w wierszu polecenia mysql, aby zmienić hasło użytkownika root:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');
Od tej pory wszystko działało dobrze.
źródło
Pracował dla mnie, używam Centos
źródło
To nie odpowiada bezpośrednio na twoje pytanie, ale na jego podzbiór, a mianowicie za pomocą PythonAnywhere. Ciągle natknąłem się na to pytanie, szukając poprawki, więc dodam ją tutaj w nadziei, że pomoże to innym w mojej sytuacji.
PythonAnywhere zdecydował się zmienić nazwy hostów połączeń z bazą danych w celu zwiększenia wydajności i niezawodności, jak wyszczególniono tutaj :
Dlatego musisz zaktualizować nazwę hosta do wartości wyróżnionej powyżej.
źródło
Właśnie miałem ten problem. po dniu sprawdzenia wreszcie mam odpowiedź, że plik mysql.sock jest tworzony podczas uruchamiania MariaDB i jest usuwany po wyłączeniu MariaDB. Nie będzie istniał, jeśli MariaDB nie działa. może nie zainstalowałeś MariaDB. MOŻESZ POSTĘPOWAĆ PONIŻSZE INSTRUKCJE: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST
źródło
Miałem ten błąd gniazda i zasadniczo sprowadzało się to do tego, że MySQL nie działał. Jeśli uruchomisz nową instalację, upewnij się, że zainstalowałeś 1) pakiet systemowy i 2) instalator panelu (mysql.prefPane). Instalator panelu pozwoli ci przejść do Preferencji systemowych i otworzyć MySQL, a następnie uruchomić instancję.
Pamiętaj, że przy nowej instalacji musiałem zresetować komputer, aby zmiany odniosły skutek. Po ponownym uruchomieniu uruchomiłem nową instancję i bez problemu mogłem otworzyć połączenie z hostem lokalnym.
Warto również zauważyć, że najwyraźniej miałem wcześniejsze wersje MySQL, ale usunąłem panel, co ułatwia uruchomienie instancji MySQL dla użytkowników komputerów Mac.
Dobry link do tego procesu ponownej instalacji: http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/
źródło