[Fix] MySQL "error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'" hatası çözümü.

Kaptan Yosun

Moderatör
Moderatör
Premium Üye
Mesaj
758
Çözümler
24
Beğeni
637
Puan
839
Ticaret Puanı
0
Bir önceki sanal makinemde hata vermeyen MySQL bir türlü yeni sanal makinede çalışmıyordu. Fark ettim ki FreeBSD hostname'inde boşluk varsa MySQL başlayamıyor. Şu şekilde çözebilirsiniz:

Önce mysql'i durdurun.
Kod:
Genişlet Daralt Kopyala
service mysql-server stop

Sonra kaldırın.
Kod:
Genişlet Daralt Kopyala
pkg remove mysql56-server mysql56-client

Arta kalan dosyaları silin.
Kod:
Genişlet Daralt Kopyala
cd /var/db
rm -rf mysql

Makinanızın hostname'ini boşluksuz bir şeyle değiştirin. (Örnek: hostname="Altyapi-FreeBSD13")
Kod:
Genişlet Daralt Kopyala
ee /etc/rc.conf

Makineyi yeniden başlatın.
Kod:
Genişlet Daralt Kopyala
reboot

Mysql'i yeniden kurun.
Kod:
Genişlet Daralt Kopyala
pkg install mysql56-server mysql56-client

Sonra klasik MySQL kurulum adımlarını takip edin.
Kod:
Genişlet Daralt Kopyala
pwd_mkdb -p /etc/master.passwd
chown -R mysql /var/db/mysql/
chgrp -R mysql /var/db/mysql/
echo 'mysql_enable="YES"' >> /etc/rc.conf
service mysql-server start

mysqladmin -uroot -p password
Enter password: <burayı boş bırakın.>
New password: <yeni şifrenizi girin.>
Confirm new password: <yeni şifrenizi girmeyi onaylayın.>

mysql -p
CREATE USER 'root'@'%' IDENTIFIED BY 'xxx';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
flush privileges;
quit;

Yukarıdaki kodları kendi MySQL sürümünüze göre değiştirebilirsiniz.
 
Geçenlerde bu sorunla karşılaştım ve denemediğim hiç bir yol kalmadı sorunu şu şekilde çözmüştüm "symlink" ben mysql56'dan mariadb106'a geçerken yaşadım neden olduğunu bilmiyorum ama my.conf vb sistemin ayar dosyalarından /tmp/ klasörünü geçerli kılmış olsam da fayda etmedi.

"symlink" "Sembolik link" çalışır kopyasını oluşturdum döküman burada.

Sembolik bağ (symbolic link) Nedir?

İşletim sistemlerinde her dosya bir dizinin (klasörün) içindedir. Bizim dosyamız bir klasörün içinde bulunuyor ve aynı zamanda farklı bir klasörde daha olmasını istiyorsak, ama bunu yaparken dosyanın kopyalarını oluşturmak istemiyorsak, (sadece oradan da erişilebilmesini istiyorsak) dosyayı diğer klasöre kopyalamak yerine sembolik bağ (symbolic link) oluşturabiliriz. Böylece tek dosya olmuş olacak (değişiklik yapıldığında her yere tek tek kopyalamak zorunda kalmayacaksınız) hem de diğer link oluşturulan yerlerden de erişim verebilmiş olacaksınız. Disk maliyeti de daha düşük olacaktır.

Sembolik link ile klasörleri de linkleyebilirsiniz. Bu sayede bir sürü link oluşturmanız gereken durumları da sürklase etmiş olursunuz.


Kod:
Genişlet Daralt Kopyala
ln -s /dosyanin/bulundugu/dizin/dosya.txt /linkin/olusturulacagi/dizin/dosya.txt


Benim uyguladığım dizin.
Kod:
Genişlet Daralt Kopyala
ln -s /var/run/mysql/mysql.sock /tmp/mysql.sock
 
Üst