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.cnf
dosyaları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 mysql
mariadb 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 socket
anlıyorum:
--socket [/tmp/mysql.sock]
bu biraz kafa karıştırıcı çünkü burası /usr/local/mariadb/data/mariadb.sock
gerçek yer (en azından benim makinemde)
Bunu /usr/local/mariadb/data/mariadb.sock
gerçekten nerede yapılandırabileceğimi merak ediyorum, /tmp/mysql.sock
bö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.