Yerel MySQL sunucusuna '/var/lib/mysql/mysql.sock' soketi ile bağlanamıyor (2)


255

MySQL bağlanmak çalıştığınızda aşağıdaki hatayı alıyorum:

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

Bu hatanın bir çözümü var mı? Bunun arkasındaki sebep ne olabilir?


Bunu burada cevapladım, lütfen aşağıdaki bağlantıyı kontrol edin: stackoverflow.com/a/35577309/4773290
Pratik Patil

Yanıtlar:


222

"Localhost" veya "127.0.0.1" e mi bağlanıyorsunuz? "Localhost" a bağlandığınızda soket konektörünün kullanıldığını fark ettim, ancak "127.0.0.1" e bağlandığınızda TCP / IP konektörünün kullanıldığını fark ettim. Soket konektörü etkin değilse / çalışmıyorsa "127.0.0.1" kullanmayı deneyebilirsiniz.


27
Bu durumda, muhtemelen MYSQL sunucunuzun gerçekten çalışıp çalışmadığını kontrol etmelisiniz.
Jan Thomä

3
Ayrıca soket parametresine sahip bir soket kullanmaya zorlayabilir (/ usr / bin / mysql ile -S) ve bir bağlantı noktası (/ usr / bin / mysql ile -P).
Kaoru

Localhost dışında tam bir ağ adı kullanmak benim için çalıştı. Sadece istemci tarafı 'hosts' dosyasında bildirildiğinden emin olun.
Fabien Haddadi

2
Cygwin kullanıcıları için not: cygwin mysql istemcisi yerel bir WAMP mysql sunucusuna bağlanmaya çalışırsa, -h <localhost dışında ana bilgisayar adı> kullanın. Bir mysql.sock dosyası oluşturmaya çalışmayın ve herhangi bir my.cnf dosyasında bildirmeyin, çalışmaz.
Fabien Haddadi

Yanlış bir ana bilgisayar adı bana aynı hatayı verdi. /etc/hostsDocker kapsayıcısındaki dosyaya baktığımda bana MySql ana bilgisayar adını gösterdim mysql. Bağlantı yapılandırmamda aynı ana bilgisayar adını kullanmak sorunu çözdü.
Stephane

188

MySQL hizmetinizin çalıştığından emin olun

service mysqld start

Ardından, aşağıdakilerden birini deneyin:

(mysql için şifre belirlemediyseniz)

mysql -u root

zaten şifre ayarladıysanız

mysql -u root -p

5
debian'ın yeni sürümlerinde: service mariadb startçünkü mariadb.org/debian-9-released-mariadb-mysql-variant
Zahra

2
O adama madalya ver.
Siraj Alam

Benim için cevap buydu. Ben mariadb kullanıyorum çünkü çözüm aşağıdaki çalıştırmak oldu: "sudo systemctl start mariadb". Bundan sonra her şey iyiydi.
mohsen

@Zahra'ya madalya ver
Ahmed C

28

My.cnf dosyanız (genellikle etc klasöründe) ile doğru yapılandırılmışsa

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

mysql'in çalışıp çalışmadığını aşağıdaki komutla kontrol edebilirsiniz:

mysqladmin -u root -p status

mysql klasörüne olan izninizi değiştirmeyi deneyin. Yerel olarak çalışıyorsanız şunları deneyebilirsiniz:

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

bu benim için çözdü


Benim için de çalışıyor, ancak en son sürüme yükselttikten sonra bu sorunu ortaya çıkardıktan sonra, bunun neden olduğunu bilebilir miyim?
Ben

sudo chmod -R 777 / var / lib / mysql / Bir liman işçisi konteynırını başlatmakta yaşadığım bir sorunla benim için
çalıştım

23

MySQL sunucusu çalışmıyor veya soket dosyasının yeri değil (my.cnf'yi kontrol edin).


Yukarıda açıklanan sorun vardı ve bu sorun oldu. Teşekkürler.
oshirowanen

3
Homebrew kurulumu için bu nerede olurdu?
pal4life

19

Büyük olasılıkla mysql.sockmevcut değil/var/lib/mysql/ .

Aynı dosyayı başka bir konumda bulursanız, symlink yapın:

Örneğin: Bende var /data/mysql_datadir/mysql.sock

Kullanıcıyı mysql olarak değiştirin ve aşağıda belirtildiği şekilde çalıştırın:

su mysql

ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock

Bu benim sorunumu çözdü


mysql.sock'u başka bir şeye yeniden adlandırmak, sonra mysqld ("service mysqld restart") 'ı yeniden başlatmak, sonra mysql.sock için başka bir şeyi yeniden adlandırmak benim için çalıştı. Bu cevapta küçük bir değişiklik var, teşekkürler.
Bulanık Analiz

Bu yanıt mysql.sockdosyanın yerini bulmanıza yardımcı olabilir
Nobita

15

Yeni bir RHEL üzerindeyseniz, mysql db yerine mariadb (açık kaynaklı bir mysql db) başlatmanız gerekebilir:

yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start

Daha sonra mysql'e her zamanki gibi erişebilmelisiniz:

mysql -u root -p

FYI bu CentOS 8.1 için de geçerlidir. Kurulumdan sonra mariadb-serverve bazı varsayılan güvenli olmayan ayarları temizlemek mariadbiçin çalıştırmayı unutmayın mysql_secure_installation.
Dio Phung

13

Benim durumumda ben başka yere içine soket dosya taşınmış /etc/my.cnf gelen /var/lib/mysql/mysql.socketmek/tmp/mysql.sock

MySQL hizmetini yeniden başlattıktan sonra bile bağlanmaya çalıştığımda hata iletisini görüyorum. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Sorun, istemcinin yapılandırılma biçimidir. Tanılamayı çalıştırmak aslında doğru soket yolunu gösterecektir. Örneğinps aux | grep mysqld

İşler:

mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock

Çalışmıyor:

mysql -uroot -p
mysql -uroot -p -hlocalhost

Şunları yapabilirsiniz düzeltmek aynı ekleyerek bu sorunu soket altında çizgi [client]mysql yapılandırma içine bölümde.


13

Düzenlemek için /etc/my.cnf aşağıdaki satırları ekleyinmy.cnf

[mysqld]

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

[client]

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

MySQL'i yeniden başlatın ve tekrar bağlanın

mysql -u kullanıcı -p şifre veritabanı -h ana bilgisayar;


Tek doğru cevap. Neden yeterli oyu olmadığını merak ediyorum.
CentAu

11

MySQL hizmetinizin çalışıp çalışmadığını kontrol edin, çalışmazsa hizmeti başlatın.

Sorununuz çözülmediyse, /etc/my.cnfile başlayan bir satır gördüğünüz şekilde aşağıdaki şekilde arayın ve değiştirin socket. Bu güncellemeyi yapmadan önce o dosyanın yedeğini alın.

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

Değişmek

socket=/opt/lampp/var/mysql/mysql.sock -u root

1
Merhaba Sekar, "find / -name my.cnf" girdim ve iki konum aldım. 1) /opt/lampp/etc/my.cnf 2) /etc/mysql/my.cnf. Yani, hangisini kullanacağım .. Burada soru sordum .. stackoverflow.com/questions/32437796/…
Nana Partykar

7

Topluluk tarafından geliştirilen MySQL çatalı olan MariaDB, birçok dağıtımda MySQL'in varsayılan uygulaması haline geldi.

Önce başlamalısın,

$ sudo systemctl start mariadb

Bu başarısız olursa, deneyin,

$ sudo systemctl start mysqld

Sonra mysql başlatmak için,

$ mysql -u root -p

Bugün itibariyle Fedora'da paketin adı mariadb Ve Ubuntu'damariadb-server .

Bu nedenle, sisteminize önceden yüklenmemişse yüklemeniz gerekebilir.


7

Yeterli alanınız olduğundan emin olun /var. Mysql iblisi sürücüye ek bilgi yazamıyorsa, mysql sunucusu başlamaz ve hataya yol açarCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Kullanmayı düşünün

expire_logs_days = 10
max_binlog_size = 100M

Bu, disk kullanımını düşük tutmanıza yardımcı olacaktır.


Teşekkürler, oracle virtualbox üzerinde mysql çalıştırıyorum ve benim bd bir dökümü yaptım, ben alan tükendi ve mysql sunucusu başlatmak için alamadım, ben döküm dosyasını sildiğimde mysql sunucusunu yeniden başlatmak mümkün.
JayCee

1
Bu benim için çözdü. İnnodb_buffer_pool_size, üretim ortamları için çok yüksek bir değere ayarlanmıştı ve sanal makinemde mysql çökmesi yaptı.
Benjamin Brizzi

1
Kullanırken bu sorun vardı phabricator ve çözüm değiştirmekti innodb_buffer_pool_sizeiçinde my.cnf. Gibi küçük bir değere ayarlamak innodb_buffer_pool_size = 50Mbu hipotezi atmak için iyi bir testtir;)
Yercalamarino

Bu korkunç bir sorundu, disk alanı dışında her şeyi kontrol etti. / Var'dan boş alan geri döndü!
Nadjib Mami

5

İşte benim için işe yarayan:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart


4

Sunucuyu başlattığınızdan emin olun:

mysql.server start

Ardından root kullanıcısı ile bağlantı kurun:

mysql -uroot

3

MySQL sizin daha önce çalışıyor ve aniden durdu sadece sunucuyu "yeniden".

Bu sorunla CentOS VPS'imle karşılaşıyordum.

Sürekli alıyordu

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

Tüm teknikleri denedim, sonunda sunucuyu yeniden başlatmak sorunları düzeltti ->

shutdown -r now

Bu yardımcı olur umarım !!



3

/ var / lib / mysql içindeki dosyaları değiştirirseniz [kopyala veya değiştir gibi], mariadb.service restart başarısız olursa dosya sahibini mysql olarak ayarlamalısınız.

chown -R mysql: mysql / var / lib / mysql / *

chmod -R 700 / var / lib / mysql / *


2

Önce "service mysqld start" girin ve giriş yapın


ne demek istiyorsun? lütfen burada soru sormadan önce SSS okuyun
Freak

Bu soru üç yıl önce başarıyla cevaplandı. Bu yanıt geçen sene daha eksiksiz olarak verildi.
Cairnarvon

2

Lütfen MySQL sunucusunu doğru bir şekilde kurduğunuzdan emin olun, bu hatayı birçok kez karşıladım ve soketten hata ayıklamanın karmaşık olduğunu düşünüyorum, yani yeniden yüklemek daha kolay olabilir.

CentOS 7 kullanıyorsanız, kurmanın doğru yolu:

Her şeyden önce, mysql topluluk kaynağını ekleyin
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

Sonra yükleyebilirsiniz yum install mysql-community-server

Systemctl ile başlayın: systemctl start mysqld


1

Benim sorunum başarıyla mysql yüklü ve iyi çalıştı oldu.

Ancak bir gün aynı hata oluştu.

Yerel MySQL sunucusuna '/var/lib/mysql/mysql.sock' soketi ile bağlanamıyor (2)

Ve mysql.sock dosyası yoktu.

Bu sollution sorunumu çözdü ve mysql tekrar çalışıyor ve çalışıyor:

Kök olarak giriş yapın:

sudo su -

Çalıştırmak:

systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service

Kök olarak test et:

mysql -u root -p

mysql şimdi çalışıyor ve çalışıyor olmalıdır.

Umarım bu başka birine de yardımcı olabilir.


1

Mysql, socket.cile dosyasının konum bilgisini my.cnf dosyasından okurken, mysql_secure_installation programının bunu zaman zaman doğru yapmadığını unutmayın.

Eğer benim gibi iseniz ve kurulum zamanında bir şeyleri karıştırırsanız, mysql ile veritabanına bağlanabileceğiniz duruma girebilirsiniz, ancak şey güvence altına alınamaz (zaten bu komut dosyasını kullanmadan).

Bunu düzeltmek için sreddy'den gelen öneri iyi çalışır: betiğin soketi gerçekte beklediği yerden bir softlink yapın. Misal:

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

(Soketler için varsayılan konum olarak / tmp / kullanıyorum)


1

Aşağıdaki değişikliklerle benim için çalıştı

[Mysqld] 'de soket için herhangi bir yol belirtilir ve my.cnf'de [client]' da aynıdır ve mysql'yi yeniden başlat

[mysqld] yuva = / var / lib / mysql / mysql.sock

[istemci] yuva = / var / lib / mysql / mysql.sock


1

Bu hatayı yeniden oluşturmanın bir yolu: Yabancı bir sunucuya bağlanmak, ancak var olmayan yerel sunucuya bağlanmak istiyorsanız:

eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through 
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $

Yani ana bilgisayarı şöyle belirtmelisiniz:

eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+-------------------------+
| Database                |
+-------------------------+
| information_schema      |
| mysql                   |
| performance_schema      |
+-------------------------+
3 rows in set (0.00 sec)

mysql> exit
Bye
eric@dev ~ $

1

Bu aptalca bir öneri olabilir, ancak DB'nizin localhost'ta hala barındırıldığından% 100 emin olun. Örneğin, bir Ağ Yöneticisi Amazon DB barındırma seçeneğini seçtiyse (veya değiştirdiyse) bunun yerine o ana makine adına ihtiyacınız olacaktır!


Hosting sağlayıcı 1and1 kullanıyorum ve ana bilgisayara ssh-ing sonra bu hatayı aldım. Düzeltme sadece "mysql -u dbo70123521 -p --host db70313321.db.1and1.com db703133520" ana bilgisayar adını sağlamaktı
rob

1

Benim durumumda yeni bir veritabanı alıyordum ve bundan sonra tekrar bağlanamadım. Sonunda bunun bir uzay problemi olduğunu fark ettim.

Böylece son veritabanını silebilir ve sabit sürücünüzü veya yaptığım işi genişletebilir, sanal makinemin anlık görüntüsünü geri yükleyebilirsiniz.

Birisinin bunun yararlı olduğunu düşünmesi durumunda


0

SSH istemcisinde mysql bağlanmaya çalışırken bu sorunla karşılaştı, soketler arasında geçiş yapılması gerektiğinde komuta soket yolunun eklenmesini yararlı buldu.

> mysql -u user -p --socket=/path/to/mysql5143.sock

0

Disk alanınız tükeniyorsa, bu bir sorundur. Çözüm, HDD'den biraz alan boşaltmaktır.

Açıklama için lütfen daha fazlasını okuyun:

MySQL'i LINUX'ta çalıştırıyorsanız, HDD'nin boş alanını komut diski boşken kontrol edin:

 df 

böyle bir şey alıyorsanız:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              5162828   4902260         0 100% /
udev                    156676        84    156592   1% /dev
/dev/sda3              3107124     70844   2878444   3% /home

O zaman sorun bu ve şimdi çözüm var!

Mysql.sock hemen hemen her zaman kök klasörün altında olan mysql klasöründe oluşturulması istediği için alan yetersizliği nedeniyle bunu başaramadı.

Eğer periyodik olarak mysql dizini altında ls komutunu verdiyseniz (openSUSE 11.1'de / var / lib / mysql'de) şöyle bir şey elde edersiniz:

hostname:/var/lib/mysql #
.protected  IT     files        ibdata1             mysqld.log  systemtemp
.tmp        NEWS   greekDB      mysql               mysqld.pid  test
ARXEIO      TEMP1  ib_logfile0  mysql.sock          polis
DATING      deisi  ib_logfile1  mysql_upgrade_info  restore

Sık sık görünen ve kaybolan mysql.sock dosyası (klasördeki mysql.sock dosyası ile bir örneği vurmak için ls ile tahsis etmeyi denemelisiniz).

Bunun nedeni yeterli disk alanı olmamasıdır.

Umarım bazı insanlara yardım edeceğim !!!! Teşekkürler!


0

explicit_defaults_for_timestampMy.cnf dosyasından devre dışı bırakmak zorunda kaldım .


0

İlk 2, 3 çözümü deneyin. Hata stil pop-up ve bulamıyorsanız/var/lib/mysql/mysql.sock

find /var/ -name mysql.sock

/ Var / içindeki kullanılabilir alanı kontrol edin

df

Dizin dolu ise bazı unusefull dosyaları / dizinleri kaldırın

rm /var/cache/*

Muhtemelen sorununuz şimdi sıralanacaktır.


0

Sf.net'in kabuğundaysanız şunu deneyin:

mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p

{LETTER} ve {GROUP ID} değerlerini MySQL proje yöneticisi profilinizde gösterildiği gibi değiştirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.