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?
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?
Yanıtlar:
"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.
/etc/hosts
Docker 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ü.
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
service mariadb start
çünkü mariadb.org/debian-9-released-mariadb-mysql-variant
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ü
MySQL sunucusu çalışmıyor veya soket dosyasının yeri değil (my.cnf'yi kontrol edin).
Büyük olasılıkla mysql.sock
mevcut 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ü
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
mariadb-server
ve bazı varsayılan güvenli olmayan ayarları temizlemek mariadb
için çalıştırmayı unutmayın mysql_secure_installation
.
Benim durumumda ben başka yere içine soket dosya taşınmış /etc/my.cnf
gelen /var/lib/mysql/mysql.sock
etmek/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.
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;
MySQL hizmetinizin çalışıp çalışmadığını kontrol edin, çalışmazsa hizmeti başlatın.
Sorununuz çözülmediyse, /etc/my.cnf
ile 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
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.
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.
innodb_buffer_pool_size
içinde my.cnf
. Gibi küçük bir değere ayarlamak innodb_buffer_pool_size = 50M
bu hipotezi atmak için iyi bir testtir;)
Lütfen başka bir mysql hizmetinin çalışıp çalışmadığını kontrol edin.
Sunucuyu başlattığınızdan emin olun:
mysql.server start
Ardından root kullanıcısı ile bağlantı kurun:
mysql -uroot
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 !!
/ 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 / *
Önce "service mysqld start" girin ve giriş yapın
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
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.
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)
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 ~ $
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!
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
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!
İ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.
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.