Bunu çözmek için epey zaman harcadığım ve bu hatayı ararken her zaman bu sayfaya geri döndüğüm için, birilerinin kaybettiğim zamandan tasarruf etmesini umarak çözümümü burada bırakacağım. Benim durumumda MySql yerine mariadb kullansam da, yine de bu çözümü ihtiyaçlarınıza göre uyarlayabilirsiniz.
Benim sorunum
aynı, ancak benim kurulumum biraz farklı (mysql yerine mariadb):
Mariadb'ı homebrew ile kurdu
$ brew install mariadb
Arka planı başlattı
$ brew services start mariadb
Bağlanmaya çalışıldı ve yukarıda belirtilen hatayı aldım
$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Çözümüm
hangi my.cnfdosyaların kullanıldığını öğrenin mysql(bu yorumda önerildiği gibi ):
$ mysql --verbose --help | grep my.cnf
/usr/local/etc/my.cnf ~/.my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
Unix soket dosyasının nerede çalıştığını kontrol edin (neredeyse burada açıklandığı gibi ):
$ netstat -ln | grep mariadb
.... /usr/local/mariadb/data/mariadb.sock
( grep mysqlmariadb yerine isteyebilirsiniz)
Bulduğunuz soket dosyasını ekleyin ~/.my.cnf(gerekirse dosyayı oluşturun) ( yukarıdan -komut ~/.my.cnfçalıştırıldığında listelendiğini varsayarak mysql --verbose ...):
[client]
socket = /usr/local/mariadb/data/mariadb.sock
Mariadbınızı yeniden başlatın:
$ brew services restart mariadb
Bundan sonra mysql çalıştırabilirim ve şunu elde edebilirim:
$ mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Bu yüzden komutu süper kullanıcı ayrıcalıklarıyla çalıştırıyorum ve şifremi girdikten sonra:
$ sudo mysql -uroot
MariaDB [(none)]>
Notlar:
Soketi eklemeniz gereken gruplardan tam olarak emin değilim, önce [istemci-sunucu] aldım ama sonra [istemci] yeterli olmalı diye düşündüm. Ben de değiştirdim ve hala çalışıyor.
Koşarken şunu mariadb_config | grep socketanlıyorum:
--socket [/tmp/mysql.sock]
bu biraz kafa karıştırıcı çünkü burası /usr/local/mariadb/data/mariadb.sockgerçek yer (en azından benim makinemde)
Bunu /usr/local/mariadb/data/mariadb.sockgerçekten nerede yapılandırabileceğimi merak ediyorum, /tmp/mysql.sockböylece kendi ayarımı düzenlemek yerine varsayılan ayarları kullanabiliyorum .my.cnf(ama şimdi bunu anlamak için çok yorgunum ...)
Bir noktada, bunu bulmadan önce başka cevaplarda bahsedilen şeyleri de yaptım.